diff --git a/cuda/copypadmul2_wrapper.go b/cuda/copypadmul2_wrapper.go index 16e96d596..4bf715ef2 100644 --- a/cuda/copypadmul2_wrapper.go +++ b/cuda/copypadmul2_wrapper.go @@ -5,54 +5,54 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for copypadmul2 kernel var copypadmul2_code cu.Function // Stores the arguments for copypadmul2 kernel invocation -type copypadmul2_args_t struct{ - arg_dst unsafe.Pointer - arg_Dx int - arg_Dy int - arg_Dz int - arg_src unsafe.Pointer - arg_Sx int - arg_Sy int - arg_Sz int - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_vol unsafe.Pointer - argptr [11]unsafe.Pointer +type copypadmul2_args_t struct { + arg_dst unsafe.Pointer + arg_Dx int + arg_Dy int + arg_Dz int + arg_src unsafe.Pointer + arg_Sx int + arg_Sy int + arg_Sz int + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_vol unsafe.Pointer + argptr [11]unsafe.Pointer sync.Mutex } // Stores the arguments for copypadmul2 kernel invocation var copypadmul2_args copypadmul2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - copypadmul2_args.argptr[0] = unsafe.Pointer(©padmul2_args.arg_dst) - copypadmul2_args.argptr[1] = unsafe.Pointer(©padmul2_args.arg_Dx) - copypadmul2_args.argptr[2] = unsafe.Pointer(©padmul2_args.arg_Dy) - copypadmul2_args.argptr[3] = unsafe.Pointer(©padmul2_args.arg_Dz) - copypadmul2_args.argptr[4] = unsafe.Pointer(©padmul2_args.arg_src) - copypadmul2_args.argptr[5] = unsafe.Pointer(©padmul2_args.arg_Sx) - copypadmul2_args.argptr[6] = unsafe.Pointer(©padmul2_args.arg_Sy) - copypadmul2_args.argptr[7] = unsafe.Pointer(©padmul2_args.arg_Sz) - copypadmul2_args.argptr[8] = unsafe.Pointer(©padmul2_args.arg_Ms_) - copypadmul2_args.argptr[9] = unsafe.Pointer(©padmul2_args.arg_Ms_mul) - copypadmul2_args.argptr[10] = unsafe.Pointer(©padmul2_args.arg_vol) - } + copypadmul2_args.argptr[0] = unsafe.Pointer(©padmul2_args.arg_dst) + copypadmul2_args.argptr[1] = unsafe.Pointer(©padmul2_args.arg_Dx) + copypadmul2_args.argptr[2] = unsafe.Pointer(©padmul2_args.arg_Dy) + copypadmul2_args.argptr[3] = unsafe.Pointer(©padmul2_args.arg_Dz) + copypadmul2_args.argptr[4] = unsafe.Pointer(©padmul2_args.arg_src) + copypadmul2_args.argptr[5] = unsafe.Pointer(©padmul2_args.arg_Sx) + copypadmul2_args.argptr[6] = unsafe.Pointer(©padmul2_args.arg_Sy) + copypadmul2_args.argptr[7] = unsafe.Pointer(©padmul2_args.arg_Sz) + copypadmul2_args.argptr[8] = unsafe.Pointer(©padmul2_args.arg_Ms_) + copypadmul2_args.argptr[9] = unsafe.Pointer(©padmul2_args.arg_Ms_mul) + copypadmul2_args.argptr[10] = unsafe.Pointer(©padmul2_args.arg_vol) +} // Wrapper for copypadmul2 CUDA kernel, asynchronous. -func k_copypadmul2_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, Ms_ unsafe.Pointer, Ms_mul float32, vol unsafe.Pointer, cfg *config) { - if Synchronous{ // debug +func k_copypadmul2_async(dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, Ms_ unsafe.Pointer, Ms_mul float32, vol unsafe.Pointer, cfg *config) { + if Synchronous { // debug Sync() timer.Start("copypadmul2") } @@ -60,48 +60,47 @@ func k_copypadmul2_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsaf copypadmul2_args.Lock() defer copypadmul2_args.Unlock() - if copypadmul2_code == 0{ + if copypadmul2_code == 0 { copypadmul2_code = fatbinLoad(copypadmul2_map, "copypadmul2") } - copypadmul2_args.arg_dst = dst - copypadmul2_args.arg_Dx = Dx - copypadmul2_args.arg_Dy = Dy - copypadmul2_args.arg_Dz = Dz - copypadmul2_args.arg_src = src - copypadmul2_args.arg_Sx = Sx - copypadmul2_args.arg_Sy = Sy - copypadmul2_args.arg_Sz = Sz - copypadmul2_args.arg_Ms_ = Ms_ - copypadmul2_args.arg_Ms_mul = Ms_mul - copypadmul2_args.arg_vol = vol - + copypadmul2_args.arg_dst = dst + copypadmul2_args.arg_Dx = Dx + copypadmul2_args.arg_Dy = Dy + copypadmul2_args.arg_Dz = Dz + copypadmul2_args.arg_src = src + copypadmul2_args.arg_Sx = Sx + copypadmul2_args.arg_Sy = Sy + copypadmul2_args.arg_Sz = Sz + copypadmul2_args.arg_Ms_ = Ms_ + copypadmul2_args.arg_Ms_mul = Ms_mul + copypadmul2_args.arg_vol = vol args := copypadmul2_args.argptr[:] cu.LaunchKernel(copypadmul2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("copypadmul2") } } // maps compute capability on PTX code for copypadmul2 kernel. -var copypadmul2_map = map[int]string{ 0: "" , -30: copypadmul2_ptx_30 , -35: copypadmul2_ptx_35 , -37: copypadmul2_ptx_37 , -50: copypadmul2_ptx_50 , -52: copypadmul2_ptx_52 , -53: copypadmul2_ptx_53 , -60: copypadmul2_ptx_60 , -61: copypadmul2_ptx_61 , -70: copypadmul2_ptx_70 , -75: copypadmul2_ptx_75 } +var copypadmul2_map = map[int]string{0: "", + 30: copypadmul2_ptx_30, + 35: copypadmul2_ptx_35, + 37: copypadmul2_ptx_37, + 50: copypadmul2_ptx_50, + 52: copypadmul2_ptx_52, + 53: copypadmul2_ptx_53, + 60: copypadmul2_ptx_60, + 61: copypadmul2_ptx_61, + 70: copypadmul2_ptx_70, + 75: copypadmul2_ptx_75} // copypadmul2 PTX code for various compute capabilities. -const( - copypadmul2_ptx_30 = ` +const ( + copypadmul2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -204,7 +203,7 @@ BB0_6: ` - copypadmul2_ptx_35 = ` + copypadmul2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -307,7 +306,7 @@ BB0_6: ` - copypadmul2_ptx_37 = ` + copypadmul2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -410,7 +409,7 @@ BB0_6: ` - copypadmul2_ptx_50 = ` + copypadmul2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -513,7 +512,7 @@ BB0_6: ` - copypadmul2_ptx_52 = ` + copypadmul2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -616,7 +615,7 @@ BB0_6: ` - copypadmul2_ptx_53 = ` + copypadmul2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -719,7 +718,7 @@ BB0_6: ` - copypadmul2_ptx_60 = ` + copypadmul2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -822,7 +821,7 @@ BB0_6: ` - copypadmul2_ptx_61 = ` + copypadmul2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -925,7 +924,7 @@ BB0_6: ` - copypadmul2_ptx_70 = ` + copypadmul2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1028,7 +1027,7 @@ BB0_6: ` - copypadmul2_ptx_75 = ` + copypadmul2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1131,4 +1130,4 @@ BB0_6: ` - ) +) diff --git a/cuda/copyunpad_wrapper.go b/cuda/copyunpad_wrapper.go index a3597898a..f6134fd20 100644 --- a/cuda/copyunpad_wrapper.go +++ b/cuda/copyunpad_wrapper.go @@ -5,48 +5,48 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for copyunpad kernel var copyunpad_code cu.Function // Stores the arguments for copyunpad kernel invocation -type copyunpad_args_t struct{ - arg_dst unsafe.Pointer - arg_Dx int - arg_Dy int - arg_Dz int - arg_src unsafe.Pointer - arg_Sx int - arg_Sy int - arg_Sz int - argptr [8]unsafe.Pointer +type copyunpad_args_t struct { + arg_dst unsafe.Pointer + arg_Dx int + arg_Dy int + arg_Dz int + arg_src unsafe.Pointer + arg_Sx int + arg_Sy int + arg_Sz int + argptr [8]unsafe.Pointer sync.Mutex } // Stores the arguments for copyunpad kernel invocation var copyunpad_args copyunpad_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - copyunpad_args.argptr[0] = unsafe.Pointer(©unpad_args.arg_dst) - copyunpad_args.argptr[1] = unsafe.Pointer(©unpad_args.arg_Dx) - copyunpad_args.argptr[2] = unsafe.Pointer(©unpad_args.arg_Dy) - copyunpad_args.argptr[3] = unsafe.Pointer(©unpad_args.arg_Dz) - copyunpad_args.argptr[4] = unsafe.Pointer(©unpad_args.arg_src) - copyunpad_args.argptr[5] = unsafe.Pointer(©unpad_args.arg_Sx) - copyunpad_args.argptr[6] = unsafe.Pointer(©unpad_args.arg_Sy) - copyunpad_args.argptr[7] = unsafe.Pointer(©unpad_args.arg_Sz) - } + copyunpad_args.argptr[0] = unsafe.Pointer(©unpad_args.arg_dst) + copyunpad_args.argptr[1] = unsafe.Pointer(©unpad_args.arg_Dx) + copyunpad_args.argptr[2] = unsafe.Pointer(©unpad_args.arg_Dy) + copyunpad_args.argptr[3] = unsafe.Pointer(©unpad_args.arg_Dz) + copyunpad_args.argptr[4] = unsafe.Pointer(©unpad_args.arg_src) + copyunpad_args.argptr[5] = unsafe.Pointer(©unpad_args.arg_Sx) + copyunpad_args.argptr[6] = unsafe.Pointer(©unpad_args.arg_Sy) + copyunpad_args.argptr[7] = unsafe.Pointer(©unpad_args.arg_Sz) +} // Wrapper for copyunpad CUDA kernel, asynchronous. -func k_copyunpad_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, cfg *config) { - if Synchronous{ // debug +func k_copyunpad_async(dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("copyunpad") } @@ -54,45 +54,44 @@ func k_copyunpad_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe. copyunpad_args.Lock() defer copyunpad_args.Unlock() - if copyunpad_code == 0{ + if copyunpad_code == 0 { copyunpad_code = fatbinLoad(copyunpad_map, "copyunpad") } - copyunpad_args.arg_dst = dst - copyunpad_args.arg_Dx = Dx - copyunpad_args.arg_Dy = Dy - copyunpad_args.arg_Dz = Dz - copyunpad_args.arg_src = src - copyunpad_args.arg_Sx = Sx - copyunpad_args.arg_Sy = Sy - copyunpad_args.arg_Sz = Sz - + copyunpad_args.arg_dst = dst + copyunpad_args.arg_Dx = Dx + copyunpad_args.arg_Dy = Dy + copyunpad_args.arg_Dz = Dz + copyunpad_args.arg_src = src + copyunpad_args.arg_Sx = Sx + copyunpad_args.arg_Sy = Sy + copyunpad_args.arg_Sz = Sz args := copyunpad_args.argptr[:] cu.LaunchKernel(copyunpad_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("copyunpad") } } // maps compute capability on PTX code for copyunpad kernel. -var copyunpad_map = map[int]string{ 0: "" , -30: copyunpad_ptx_30 , -35: copyunpad_ptx_35 , -37: copyunpad_ptx_37 , -50: copyunpad_ptx_50 , -52: copyunpad_ptx_52 , -53: copyunpad_ptx_53 , -60: copyunpad_ptx_60 , -61: copyunpad_ptx_61 , -70: copyunpad_ptx_70 , -75: copyunpad_ptx_75 } +var copyunpad_map = map[int]string{0: "", + 30: copyunpad_ptx_30, + 35: copyunpad_ptx_35, + 37: copyunpad_ptx_37, + 50: copyunpad_ptx_50, + 52: copyunpad_ptx_52, + 53: copyunpad_ptx_53, + 60: copyunpad_ptx_60, + 61: copyunpad_ptx_61, + 70: copyunpad_ptx_70, + 75: copyunpad_ptx_75} // copyunpad PTX code for various compute capabilities. -const( - copyunpad_ptx_30 = ` +const ( + copyunpad_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -163,7 +162,7 @@ BB0_2: ` - copyunpad_ptx_35 = ` + copyunpad_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -234,7 +233,7 @@ BB0_2: ` - copyunpad_ptx_37 = ` + copyunpad_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -305,7 +304,7 @@ BB0_2: ` - copyunpad_ptx_50 = ` + copyunpad_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -376,7 +375,7 @@ BB0_2: ` - copyunpad_ptx_52 = ` + copyunpad_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -447,7 +446,7 @@ BB0_2: ` - copyunpad_ptx_53 = ` + copyunpad_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -518,7 +517,7 @@ BB0_2: ` - copyunpad_ptx_60 = ` + copyunpad_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -589,7 +588,7 @@ BB0_2: ` - copyunpad_ptx_61 = ` + copyunpad_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -660,7 +659,7 @@ BB0_2: ` - copyunpad_ptx_70 = ` + copyunpad_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -731,7 +730,7 @@ BB0_2: ` - copyunpad_ptx_75 = ` + copyunpad_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -802,4 +801,4 @@ BB0_2: ` - ) +) diff --git a/cuda/crop_wrapper.go b/cuda/crop_wrapper.go index c9bb409e5..efe1ccff1 100644 --- a/cuda/crop_wrapper.go +++ b/cuda/crop_wrapper.go @@ -5,54 +5,54 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for crop kernel var crop_code cu.Function // Stores the arguments for crop kernel invocation -type crop_args_t struct{ - arg_dst unsafe.Pointer - arg_Dx int - arg_Dy int - arg_Dz int - arg_src unsafe.Pointer - arg_Sx int - arg_Sy int - arg_Sz int - arg_Offx int - arg_Offy int - arg_Offz int - argptr [11]unsafe.Pointer +type crop_args_t struct { + arg_dst unsafe.Pointer + arg_Dx int + arg_Dy int + arg_Dz int + arg_src unsafe.Pointer + arg_Sx int + arg_Sy int + arg_Sz int + arg_Offx int + arg_Offy int + arg_Offz int + argptr [11]unsafe.Pointer sync.Mutex } // Stores the arguments for crop kernel invocation var crop_args crop_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - crop_args.argptr[0] = unsafe.Pointer(&crop_args.arg_dst) - crop_args.argptr[1] = unsafe.Pointer(&crop_args.arg_Dx) - crop_args.argptr[2] = unsafe.Pointer(&crop_args.arg_Dy) - crop_args.argptr[3] = unsafe.Pointer(&crop_args.arg_Dz) - crop_args.argptr[4] = unsafe.Pointer(&crop_args.arg_src) - crop_args.argptr[5] = unsafe.Pointer(&crop_args.arg_Sx) - crop_args.argptr[6] = unsafe.Pointer(&crop_args.arg_Sy) - crop_args.argptr[7] = unsafe.Pointer(&crop_args.arg_Sz) - crop_args.argptr[8] = unsafe.Pointer(&crop_args.arg_Offx) - crop_args.argptr[9] = unsafe.Pointer(&crop_args.arg_Offy) - crop_args.argptr[10] = unsafe.Pointer(&crop_args.arg_Offz) - } + crop_args.argptr[0] = unsafe.Pointer(&crop_args.arg_dst) + crop_args.argptr[1] = unsafe.Pointer(&crop_args.arg_Dx) + crop_args.argptr[2] = unsafe.Pointer(&crop_args.arg_Dy) + crop_args.argptr[3] = unsafe.Pointer(&crop_args.arg_Dz) + crop_args.argptr[4] = unsafe.Pointer(&crop_args.arg_src) + crop_args.argptr[5] = unsafe.Pointer(&crop_args.arg_Sx) + crop_args.argptr[6] = unsafe.Pointer(&crop_args.arg_Sy) + crop_args.argptr[7] = unsafe.Pointer(&crop_args.arg_Sz) + crop_args.argptr[8] = unsafe.Pointer(&crop_args.arg_Offx) + crop_args.argptr[9] = unsafe.Pointer(&crop_args.arg_Offy) + crop_args.argptr[10] = unsafe.Pointer(&crop_args.arg_Offz) +} // Wrapper for crop CUDA kernel, asynchronous. -func k_crop_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, Offx int, Offy int, Offz int, cfg *config) { - if Synchronous{ // debug +func k_crop_async(dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, Offx int, Offy int, Offz int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("crop") } @@ -60,48 +60,47 @@ func k_crop_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Point crop_args.Lock() defer crop_args.Unlock() - if crop_code == 0{ + if crop_code == 0 { crop_code = fatbinLoad(crop_map, "crop") } - crop_args.arg_dst = dst - crop_args.arg_Dx = Dx - crop_args.arg_Dy = Dy - crop_args.arg_Dz = Dz - crop_args.arg_src = src - crop_args.arg_Sx = Sx - crop_args.arg_Sy = Sy - crop_args.arg_Sz = Sz - crop_args.arg_Offx = Offx - crop_args.arg_Offy = Offy - crop_args.arg_Offz = Offz - + crop_args.arg_dst = dst + crop_args.arg_Dx = Dx + crop_args.arg_Dy = Dy + crop_args.arg_Dz = Dz + crop_args.arg_src = src + crop_args.arg_Sx = Sx + crop_args.arg_Sy = Sy + crop_args.arg_Sz = Sz + crop_args.arg_Offx = Offx + crop_args.arg_Offy = Offy + crop_args.arg_Offz = Offz args := crop_args.argptr[:] cu.LaunchKernel(crop_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("crop") } } // maps compute capability on PTX code for crop kernel. -var crop_map = map[int]string{ 0: "" , -30: crop_ptx_30 , -35: crop_ptx_35 , -37: crop_ptx_37 , -50: crop_ptx_50 , -52: crop_ptx_52 , -53: crop_ptx_53 , -60: crop_ptx_60 , -61: crop_ptx_61 , -70: crop_ptx_70 , -75: crop_ptx_75 } +var crop_map = map[int]string{0: "", + 30: crop_ptx_30, + 35: crop_ptx_35, + 37: crop_ptx_37, + 50: crop_ptx_50, + 52: crop_ptx_52, + 53: crop_ptx_53, + 60: crop_ptx_60, + 61: crop_ptx_61, + 70: crop_ptx_70, + 75: crop_ptx_75} // crop PTX code for various compute capabilities. -const( - crop_ptx_30 = ` +const ( + crop_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -181,7 +180,7 @@ BB0_2: ` - crop_ptx_35 = ` + crop_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -261,7 +260,7 @@ BB0_2: ` - crop_ptx_37 = ` + crop_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -341,7 +340,7 @@ BB0_2: ` - crop_ptx_50 = ` + crop_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -421,7 +420,7 @@ BB0_2: ` - crop_ptx_52 = ` + crop_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -501,7 +500,7 @@ BB0_2: ` - crop_ptx_53 = ` + crop_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -581,7 +580,7 @@ BB0_2: ` - crop_ptx_60 = ` + crop_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -661,7 +660,7 @@ BB0_2: ` - crop_ptx_61 = ` + crop_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -741,7 +740,7 @@ BB0_2: ` - crop_ptx_70 = ` + crop_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -821,7 +820,7 @@ BB0_2: ` - crop_ptx_75 = ` + crop_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -901,4 +900,4 @@ BB0_2: ` - ) +) diff --git a/cuda/crossproduct_wrapper.go b/cuda/crossproduct_wrapper.go index 910878b6f..10c242a8a 100644 --- a/cuda/crossproduct_wrapper.go +++ b/cuda/crossproduct_wrapper.go @@ -5,52 +5,52 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for crossproduct kernel var crossproduct_code cu.Function // Stores the arguments for crossproduct kernel invocation -type crossproduct_args_t struct{ - arg_dstx unsafe.Pointer - arg_dsty unsafe.Pointer - arg_dstz unsafe.Pointer - arg_ax unsafe.Pointer - arg_ay unsafe.Pointer - arg_az unsafe.Pointer - arg_bx unsafe.Pointer - arg_by unsafe.Pointer - arg_bz unsafe.Pointer - arg_N int - argptr [10]unsafe.Pointer +type crossproduct_args_t struct { + arg_dstx unsafe.Pointer + arg_dsty unsafe.Pointer + arg_dstz unsafe.Pointer + arg_ax unsafe.Pointer + arg_ay unsafe.Pointer + arg_az unsafe.Pointer + arg_bx unsafe.Pointer + arg_by unsafe.Pointer + arg_bz unsafe.Pointer + arg_N int + argptr [10]unsafe.Pointer sync.Mutex } // Stores the arguments for crossproduct kernel invocation var crossproduct_args crossproduct_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - crossproduct_args.argptr[0] = unsafe.Pointer(&crossproduct_args.arg_dstx) - crossproduct_args.argptr[1] = unsafe.Pointer(&crossproduct_args.arg_dsty) - crossproduct_args.argptr[2] = unsafe.Pointer(&crossproduct_args.arg_dstz) - crossproduct_args.argptr[3] = unsafe.Pointer(&crossproduct_args.arg_ax) - crossproduct_args.argptr[4] = unsafe.Pointer(&crossproduct_args.arg_ay) - crossproduct_args.argptr[5] = unsafe.Pointer(&crossproduct_args.arg_az) - crossproduct_args.argptr[6] = unsafe.Pointer(&crossproduct_args.arg_bx) - crossproduct_args.argptr[7] = unsafe.Pointer(&crossproduct_args.arg_by) - crossproduct_args.argptr[8] = unsafe.Pointer(&crossproduct_args.arg_bz) - crossproduct_args.argptr[9] = unsafe.Pointer(&crossproduct_args.arg_N) - } + crossproduct_args.argptr[0] = unsafe.Pointer(&crossproduct_args.arg_dstx) + crossproduct_args.argptr[1] = unsafe.Pointer(&crossproduct_args.arg_dsty) + crossproduct_args.argptr[2] = unsafe.Pointer(&crossproduct_args.arg_dstz) + crossproduct_args.argptr[3] = unsafe.Pointer(&crossproduct_args.arg_ax) + crossproduct_args.argptr[4] = unsafe.Pointer(&crossproduct_args.arg_ay) + crossproduct_args.argptr[5] = unsafe.Pointer(&crossproduct_args.arg_az) + crossproduct_args.argptr[6] = unsafe.Pointer(&crossproduct_args.arg_bx) + crossproduct_args.argptr[7] = unsafe.Pointer(&crossproduct_args.arg_by) + crossproduct_args.argptr[8] = unsafe.Pointer(&crossproduct_args.arg_bz) + crossproduct_args.argptr[9] = unsafe.Pointer(&crossproduct_args.arg_N) +} // Wrapper for crossproduct CUDA kernel, asynchronous. -func k_crossproduct_async ( dstx unsafe.Pointer, dsty unsafe.Pointer, dstz unsafe.Pointer, ax unsafe.Pointer, ay unsafe.Pointer, az unsafe.Pointer, bx unsafe.Pointer, by unsafe.Pointer, bz unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_crossproduct_async(dstx unsafe.Pointer, dsty unsafe.Pointer, dstz unsafe.Pointer, ax unsafe.Pointer, ay unsafe.Pointer, az unsafe.Pointer, bx unsafe.Pointer, by unsafe.Pointer, bz unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("crossproduct") } @@ -58,47 +58,46 @@ func k_crossproduct_async ( dstx unsafe.Pointer, dsty unsafe.Pointer, dstz unsaf crossproduct_args.Lock() defer crossproduct_args.Unlock() - if crossproduct_code == 0{ + if crossproduct_code == 0 { crossproduct_code = fatbinLoad(crossproduct_map, "crossproduct") } - crossproduct_args.arg_dstx = dstx - crossproduct_args.arg_dsty = dsty - crossproduct_args.arg_dstz = dstz - crossproduct_args.arg_ax = ax - crossproduct_args.arg_ay = ay - crossproduct_args.arg_az = az - crossproduct_args.arg_bx = bx - crossproduct_args.arg_by = by - crossproduct_args.arg_bz = bz - crossproduct_args.arg_N = N - + crossproduct_args.arg_dstx = dstx + crossproduct_args.arg_dsty = dsty + crossproduct_args.arg_dstz = dstz + crossproduct_args.arg_ax = ax + crossproduct_args.arg_ay = ay + crossproduct_args.arg_az = az + crossproduct_args.arg_bx = bx + crossproduct_args.arg_by = by + crossproduct_args.arg_bz = bz + crossproduct_args.arg_N = N args := crossproduct_args.argptr[:] cu.LaunchKernel(crossproduct_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("crossproduct") } } // maps compute capability on PTX code for crossproduct kernel. -var crossproduct_map = map[int]string{ 0: "" , -30: crossproduct_ptx_30 , -35: crossproduct_ptx_35 , -37: crossproduct_ptx_37 , -50: crossproduct_ptx_50 , -52: crossproduct_ptx_52 , -53: crossproduct_ptx_53 , -60: crossproduct_ptx_60 , -61: crossproduct_ptx_61 , -70: crossproduct_ptx_70 , -75: crossproduct_ptx_75 } +var crossproduct_map = map[int]string{0: "", + 30: crossproduct_ptx_30, + 35: crossproduct_ptx_35, + 37: crossproduct_ptx_37, + 50: crossproduct_ptx_50, + 52: crossproduct_ptx_52, + 53: crossproduct_ptx_53, + 60: crossproduct_ptx_60, + 61: crossproduct_ptx_61, + 70: crossproduct_ptx_70, + 75: crossproduct_ptx_75} // crossproduct PTX code for various compute capabilities. -const( - crossproduct_ptx_30 = ` +const ( + crossproduct_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -188,7 +187,7 @@ BB0_2: ` - crossproduct_ptx_35 = ` + crossproduct_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -278,7 +277,7 @@ BB0_2: ` - crossproduct_ptx_37 = ` + crossproduct_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -368,7 +367,7 @@ BB0_2: ` - crossproduct_ptx_50 = ` + crossproduct_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -458,7 +457,7 @@ BB0_2: ` - crossproduct_ptx_52 = ` + crossproduct_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -548,7 +547,7 @@ BB0_2: ` - crossproduct_ptx_53 = ` + crossproduct_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -638,7 +637,7 @@ BB0_2: ` - crossproduct_ptx_60 = ` + crossproduct_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -728,7 +727,7 @@ BB0_2: ` - crossproduct_ptx_61 = ` + crossproduct_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -818,7 +817,7 @@ BB0_2: ` - crossproduct_ptx_70 = ` + crossproduct_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -908,7 +907,7 @@ BB0_2: ` - crossproduct_ptx_75 = ` + crossproduct_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -998,4 +997,4 @@ BB0_2: ` - ) +) diff --git a/cuda/cubicanisotropy2_wrapper.go b/cuda/cubicanisotropy2_wrapper.go index ab70142b8..e8fab314f 100644 --- a/cuda/cubicanisotropy2_wrapper.go +++ b/cuda/cubicanisotropy2_wrapper.go @@ -5,86 +5,86 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for addcubicanisotropy2 kernel var addcubicanisotropy2_code cu.Function // Stores the arguments for addcubicanisotropy2 kernel invocation -type addcubicanisotropy2_args_t struct{ - arg_Bx unsafe.Pointer - arg_By unsafe.Pointer - arg_Bz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_k1_ unsafe.Pointer - arg_k1_mul float32 - arg_k2_ unsafe.Pointer - arg_k2_mul float32 - arg_k3_ unsafe.Pointer - arg_k3_mul float32 - arg_c1x_ unsafe.Pointer - arg_c1x_mul float32 - arg_c1y_ unsafe.Pointer - arg_c1y_mul float32 - arg_c1z_ unsafe.Pointer - arg_c1z_mul float32 - arg_c2x_ unsafe.Pointer - arg_c2x_mul float32 - arg_c2y_ unsafe.Pointer - arg_c2y_mul float32 - arg_c2z_ unsafe.Pointer - arg_c2z_mul float32 - arg_N int - argptr [27]unsafe.Pointer +type addcubicanisotropy2_args_t struct { + arg_Bx unsafe.Pointer + arg_By unsafe.Pointer + arg_Bz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_k1_ unsafe.Pointer + arg_k1_mul float32 + arg_k2_ unsafe.Pointer + arg_k2_mul float32 + arg_k3_ unsafe.Pointer + arg_k3_mul float32 + arg_c1x_ unsafe.Pointer + arg_c1x_mul float32 + arg_c1y_ unsafe.Pointer + arg_c1y_mul float32 + arg_c1z_ unsafe.Pointer + arg_c1z_mul float32 + arg_c2x_ unsafe.Pointer + arg_c2x_mul float32 + arg_c2y_ unsafe.Pointer + arg_c2y_mul float32 + arg_c2z_ unsafe.Pointer + arg_c2z_mul float32 + arg_N int + argptr [27]unsafe.Pointer sync.Mutex } // Stores the arguments for addcubicanisotropy2 kernel invocation var addcubicanisotropy2_args addcubicanisotropy2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - addcubicanisotropy2_args.argptr[0] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Bx) - addcubicanisotropy2_args.argptr[1] = unsafe.Pointer(&addcubicanisotropy2_args.arg_By) - addcubicanisotropy2_args.argptr[2] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Bz) - addcubicanisotropy2_args.argptr[3] = unsafe.Pointer(&addcubicanisotropy2_args.arg_mx) - addcubicanisotropy2_args.argptr[4] = unsafe.Pointer(&addcubicanisotropy2_args.arg_my) - addcubicanisotropy2_args.argptr[5] = unsafe.Pointer(&addcubicanisotropy2_args.arg_mz) - addcubicanisotropy2_args.argptr[6] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Ms_) - addcubicanisotropy2_args.argptr[7] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Ms_mul) - addcubicanisotropy2_args.argptr[8] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k1_) - addcubicanisotropy2_args.argptr[9] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k1_mul) - addcubicanisotropy2_args.argptr[10] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k2_) - addcubicanisotropy2_args.argptr[11] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k2_mul) - addcubicanisotropy2_args.argptr[12] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k3_) - addcubicanisotropy2_args.argptr[13] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k3_mul) - addcubicanisotropy2_args.argptr[14] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1x_) - addcubicanisotropy2_args.argptr[15] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1x_mul) - addcubicanisotropy2_args.argptr[16] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1y_) - addcubicanisotropy2_args.argptr[17] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1y_mul) - addcubicanisotropy2_args.argptr[18] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1z_) - addcubicanisotropy2_args.argptr[19] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1z_mul) - addcubicanisotropy2_args.argptr[20] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2x_) - addcubicanisotropy2_args.argptr[21] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2x_mul) - addcubicanisotropy2_args.argptr[22] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2y_) - addcubicanisotropy2_args.argptr[23] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2y_mul) - addcubicanisotropy2_args.argptr[24] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2z_) - addcubicanisotropy2_args.argptr[25] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2z_mul) - addcubicanisotropy2_args.argptr[26] = unsafe.Pointer(&addcubicanisotropy2_args.arg_N) - } + addcubicanisotropy2_args.argptr[0] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Bx) + addcubicanisotropy2_args.argptr[1] = unsafe.Pointer(&addcubicanisotropy2_args.arg_By) + addcubicanisotropy2_args.argptr[2] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Bz) + addcubicanisotropy2_args.argptr[3] = unsafe.Pointer(&addcubicanisotropy2_args.arg_mx) + addcubicanisotropy2_args.argptr[4] = unsafe.Pointer(&addcubicanisotropy2_args.arg_my) + addcubicanisotropy2_args.argptr[5] = unsafe.Pointer(&addcubicanisotropy2_args.arg_mz) + addcubicanisotropy2_args.argptr[6] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Ms_) + addcubicanisotropy2_args.argptr[7] = unsafe.Pointer(&addcubicanisotropy2_args.arg_Ms_mul) + addcubicanisotropy2_args.argptr[8] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k1_) + addcubicanisotropy2_args.argptr[9] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k1_mul) + addcubicanisotropy2_args.argptr[10] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k2_) + addcubicanisotropy2_args.argptr[11] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k2_mul) + addcubicanisotropy2_args.argptr[12] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k3_) + addcubicanisotropy2_args.argptr[13] = unsafe.Pointer(&addcubicanisotropy2_args.arg_k3_mul) + addcubicanisotropy2_args.argptr[14] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1x_) + addcubicanisotropy2_args.argptr[15] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1x_mul) + addcubicanisotropy2_args.argptr[16] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1y_) + addcubicanisotropy2_args.argptr[17] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1y_mul) + addcubicanisotropy2_args.argptr[18] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1z_) + addcubicanisotropy2_args.argptr[19] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c1z_mul) + addcubicanisotropy2_args.argptr[20] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2x_) + addcubicanisotropy2_args.argptr[21] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2x_mul) + addcubicanisotropy2_args.argptr[22] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2y_) + addcubicanisotropy2_args.argptr[23] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2y_mul) + addcubicanisotropy2_args.argptr[24] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2z_) + addcubicanisotropy2_args.argptr[25] = unsafe.Pointer(&addcubicanisotropy2_args.arg_c2z_mul) + addcubicanisotropy2_args.argptr[26] = unsafe.Pointer(&addcubicanisotropy2_args.arg_N) +} // Wrapper for addcubicanisotropy2 CUDA kernel, asynchronous. -func k_addcubicanisotropy2_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, k1_ unsafe.Pointer, k1_mul float32, k2_ unsafe.Pointer, k2_mul float32, k3_ unsafe.Pointer, k3_mul float32, c1x_ unsafe.Pointer, c1x_mul float32, c1y_ unsafe.Pointer, c1y_mul float32, c1z_ unsafe.Pointer, c1z_mul float32, c2x_ unsafe.Pointer, c2x_mul float32, c2y_ unsafe.Pointer, c2y_mul float32, c2z_ unsafe.Pointer, c2z_mul float32, N int, cfg *config) { - if Synchronous{ // debug +func k_addcubicanisotropy2_async(Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, k1_ unsafe.Pointer, k1_mul float32, k2_ unsafe.Pointer, k2_mul float32, k3_ unsafe.Pointer, k3_mul float32, c1x_ unsafe.Pointer, c1x_mul float32, c1y_ unsafe.Pointer, c1y_mul float32, c1z_ unsafe.Pointer, c1z_mul float32, c2x_ unsafe.Pointer, c2x_mul float32, c2y_ unsafe.Pointer, c2y_mul float32, c2z_ unsafe.Pointer, c2z_mul float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("addcubicanisotropy2") } @@ -92,64 +92,63 @@ func k_addcubicanisotropy2_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz unsa addcubicanisotropy2_args.Lock() defer addcubicanisotropy2_args.Unlock() - if addcubicanisotropy2_code == 0{ + if addcubicanisotropy2_code == 0 { addcubicanisotropy2_code = fatbinLoad(addcubicanisotropy2_map, "addcubicanisotropy2") } - addcubicanisotropy2_args.arg_Bx = Bx - addcubicanisotropy2_args.arg_By = By - addcubicanisotropy2_args.arg_Bz = Bz - addcubicanisotropy2_args.arg_mx = mx - addcubicanisotropy2_args.arg_my = my - addcubicanisotropy2_args.arg_mz = mz - addcubicanisotropy2_args.arg_Ms_ = Ms_ - addcubicanisotropy2_args.arg_Ms_mul = Ms_mul - addcubicanisotropy2_args.arg_k1_ = k1_ - addcubicanisotropy2_args.arg_k1_mul = k1_mul - addcubicanisotropy2_args.arg_k2_ = k2_ - addcubicanisotropy2_args.arg_k2_mul = k2_mul - addcubicanisotropy2_args.arg_k3_ = k3_ - addcubicanisotropy2_args.arg_k3_mul = k3_mul - addcubicanisotropy2_args.arg_c1x_ = c1x_ - addcubicanisotropy2_args.arg_c1x_mul = c1x_mul - addcubicanisotropy2_args.arg_c1y_ = c1y_ - addcubicanisotropy2_args.arg_c1y_mul = c1y_mul - addcubicanisotropy2_args.arg_c1z_ = c1z_ - addcubicanisotropy2_args.arg_c1z_mul = c1z_mul - addcubicanisotropy2_args.arg_c2x_ = c2x_ - addcubicanisotropy2_args.arg_c2x_mul = c2x_mul - addcubicanisotropy2_args.arg_c2y_ = c2y_ - addcubicanisotropy2_args.arg_c2y_mul = c2y_mul - addcubicanisotropy2_args.arg_c2z_ = c2z_ - addcubicanisotropy2_args.arg_c2z_mul = c2z_mul - addcubicanisotropy2_args.arg_N = N - + addcubicanisotropy2_args.arg_Bx = Bx + addcubicanisotropy2_args.arg_By = By + addcubicanisotropy2_args.arg_Bz = Bz + addcubicanisotropy2_args.arg_mx = mx + addcubicanisotropy2_args.arg_my = my + addcubicanisotropy2_args.arg_mz = mz + addcubicanisotropy2_args.arg_Ms_ = Ms_ + addcubicanisotropy2_args.arg_Ms_mul = Ms_mul + addcubicanisotropy2_args.arg_k1_ = k1_ + addcubicanisotropy2_args.arg_k1_mul = k1_mul + addcubicanisotropy2_args.arg_k2_ = k2_ + addcubicanisotropy2_args.arg_k2_mul = k2_mul + addcubicanisotropy2_args.arg_k3_ = k3_ + addcubicanisotropy2_args.arg_k3_mul = k3_mul + addcubicanisotropy2_args.arg_c1x_ = c1x_ + addcubicanisotropy2_args.arg_c1x_mul = c1x_mul + addcubicanisotropy2_args.arg_c1y_ = c1y_ + addcubicanisotropy2_args.arg_c1y_mul = c1y_mul + addcubicanisotropy2_args.arg_c1z_ = c1z_ + addcubicanisotropy2_args.arg_c1z_mul = c1z_mul + addcubicanisotropy2_args.arg_c2x_ = c2x_ + addcubicanisotropy2_args.arg_c2x_mul = c2x_mul + addcubicanisotropy2_args.arg_c2y_ = c2y_ + addcubicanisotropy2_args.arg_c2y_mul = c2y_mul + addcubicanisotropy2_args.arg_c2z_ = c2z_ + addcubicanisotropy2_args.arg_c2z_mul = c2z_mul + addcubicanisotropy2_args.arg_N = N args := addcubicanisotropy2_args.argptr[:] cu.LaunchKernel(addcubicanisotropy2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("addcubicanisotropy2") } } // maps compute capability on PTX code for addcubicanisotropy2 kernel. -var addcubicanisotropy2_map = map[int]string{ 0: "" , -30: addcubicanisotropy2_ptx_30 , -35: addcubicanisotropy2_ptx_35 , -37: addcubicanisotropy2_ptx_37 , -50: addcubicanisotropy2_ptx_50 , -52: addcubicanisotropy2_ptx_52 , -53: addcubicanisotropy2_ptx_53 , -60: addcubicanisotropy2_ptx_60 , -61: addcubicanisotropy2_ptx_61 , -70: addcubicanisotropy2_ptx_70 , -75: addcubicanisotropy2_ptx_75 } +var addcubicanisotropy2_map = map[int]string{0: "", + 30: addcubicanisotropy2_ptx_30, + 35: addcubicanisotropy2_ptx_35, + 37: addcubicanisotropy2_ptx_37, + 50: addcubicanisotropy2_ptx_50, + 52: addcubicanisotropy2_ptx_52, + 53: addcubicanisotropy2_ptx_53, + 60: addcubicanisotropy2_ptx_60, + 61: addcubicanisotropy2_ptx_61, + 70: addcubicanisotropy2_ptx_70, + 75: addcubicanisotropy2_ptx_75} // addcubicanisotropy2 PTX code for various compute capabilities. -const( - addcubicanisotropy2_ptx_30 = ` +const ( + addcubicanisotropy2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -497,7 +496,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_35 = ` + addcubicanisotropy2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -845,7 +844,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_37 = ` + addcubicanisotropy2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1193,7 +1192,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_50 = ` + addcubicanisotropy2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1541,7 +1540,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_52 = ` + addcubicanisotropy2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -1889,7 +1888,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_53 = ` + addcubicanisotropy2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -2237,7 +2236,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_60 = ` + addcubicanisotropy2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -2585,7 +2584,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_61 = ` + addcubicanisotropy2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -2933,7 +2932,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_70 = ` + addcubicanisotropy2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -3281,7 +3280,7 @@ BB0_28: ` - addcubicanisotropy2_ptx_75 = ` + addcubicanisotropy2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -3629,4 +3628,4 @@ BB0_28: ` - ) +) diff --git a/cuda/div_wrapper.go b/cuda/div_wrapper.go index 9abfa7439..4b94cece0 100644 --- a/cuda/div_wrapper.go +++ b/cuda/div_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for pointwise_div kernel var pointwise_div_code cu.Function // Stores the arguments for pointwise_div kernel invocation -type pointwise_div_args_t struct{ - arg_dst unsafe.Pointer - arg_a unsafe.Pointer - arg_b unsafe.Pointer - arg_N int - argptr [4]unsafe.Pointer +type pointwise_div_args_t struct { + arg_dst unsafe.Pointer + arg_a unsafe.Pointer + arg_b unsafe.Pointer + arg_N int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for pointwise_div kernel invocation var pointwise_div_args pointwise_div_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - pointwise_div_args.argptr[0] = unsafe.Pointer(&pointwise_div_args.arg_dst) - pointwise_div_args.argptr[1] = unsafe.Pointer(&pointwise_div_args.arg_a) - pointwise_div_args.argptr[2] = unsafe.Pointer(&pointwise_div_args.arg_b) - pointwise_div_args.argptr[3] = unsafe.Pointer(&pointwise_div_args.arg_N) - } + pointwise_div_args.argptr[0] = unsafe.Pointer(&pointwise_div_args.arg_dst) + pointwise_div_args.argptr[1] = unsafe.Pointer(&pointwise_div_args.arg_a) + pointwise_div_args.argptr[2] = unsafe.Pointer(&pointwise_div_args.arg_b) + pointwise_div_args.argptr[3] = unsafe.Pointer(&pointwise_div_args.arg_N) +} // Wrapper for pointwise_div CUDA kernel, asynchronous. -func k_pointwise_div_async ( dst unsafe.Pointer, a unsafe.Pointer, b unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_pointwise_div_async(dst unsafe.Pointer, a unsafe.Pointer, b unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("pointwise_div") } @@ -46,41 +46,40 @@ func k_pointwise_div_async ( dst unsafe.Pointer, a unsafe.Pointer, b unsafe.Poin pointwise_div_args.Lock() defer pointwise_div_args.Unlock() - if pointwise_div_code == 0{ + if pointwise_div_code == 0 { pointwise_div_code = fatbinLoad(pointwise_div_map, "pointwise_div") } - pointwise_div_args.arg_dst = dst - pointwise_div_args.arg_a = a - pointwise_div_args.arg_b = b - pointwise_div_args.arg_N = N - + pointwise_div_args.arg_dst = dst + pointwise_div_args.arg_a = a + pointwise_div_args.arg_b = b + pointwise_div_args.arg_N = N args := pointwise_div_args.argptr[:] cu.LaunchKernel(pointwise_div_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("pointwise_div") } } // maps compute capability on PTX code for pointwise_div kernel. -var pointwise_div_map = map[int]string{ 0: "" , -30: pointwise_div_ptx_30 , -35: pointwise_div_ptx_35 , -37: pointwise_div_ptx_37 , -50: pointwise_div_ptx_50 , -52: pointwise_div_ptx_52 , -53: pointwise_div_ptx_53 , -60: pointwise_div_ptx_60 , -61: pointwise_div_ptx_61 , -70: pointwise_div_ptx_70 , -75: pointwise_div_ptx_75 } +var pointwise_div_map = map[int]string{0: "", + 30: pointwise_div_ptx_30, + 35: pointwise_div_ptx_35, + 37: pointwise_div_ptx_37, + 50: pointwise_div_ptx_50, + 52: pointwise_div_ptx_52, + 53: pointwise_div_ptx_53, + 60: pointwise_div_ptx_60, + 61: pointwise_div_ptx_61, + 70: pointwise_div_ptx_70, + 75: pointwise_div_ptx_75} // pointwise_div PTX code for various compute capabilities. -const( - pointwise_div_ptx_30 = ` +const ( + pointwise_div_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -142,7 +141,7 @@ BB0_4: ` - pointwise_div_ptx_35 = ` + pointwise_div_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -204,7 +203,7 @@ BB0_4: ` - pointwise_div_ptx_37 = ` + pointwise_div_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -266,7 +265,7 @@ BB0_4: ` - pointwise_div_ptx_50 = ` + pointwise_div_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -328,7 +327,7 @@ BB0_4: ` - pointwise_div_ptx_52 = ` + pointwise_div_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -390,7 +389,7 @@ BB0_4: ` - pointwise_div_ptx_53 = ` + pointwise_div_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -452,7 +451,7 @@ BB0_4: ` - pointwise_div_ptx_60 = ` + pointwise_div_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -514,7 +513,7 @@ BB0_4: ` - pointwise_div_ptx_61 = ` + pointwise_div_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -576,7 +575,7 @@ BB0_4: ` - pointwise_div_ptx_70 = ` + pointwise_div_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -638,7 +637,7 @@ BB0_4: ` - pointwise_div_ptx_75 = ` + pointwise_div_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -700,4 +699,4 @@ BB0_4: ` - ) +) diff --git a/cuda/dmi.cu b/cuda/dmi.cu index 12a3bdccd..635cbe823 100644 --- a/cuda/dmi.cu +++ b/cuda/dmi.cu @@ -16,7 +16,7 @@ adddmi(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ Hz, float* __restrict__ mx, float* __restrict__ my, float* __restrict__ mz, float* __restrict__ Ms_, float Ms_mul, float* __restrict__ aLUT2d, float* __restrict__ dLUT2d, uint8_t* __restrict__ regions, - float cx, float cy, float cz, int Nx, int Ny, int Nz, uint8_t PBC) { + float cx, float cy, float cz, int Nx, int Ny, int Nz, uint8_t PBC, uint8_t OpenBC) { int ix = blockIdx.x * blockDim.x + threadIdx.x; int iy = blockIdx.y * blockDim.y + threadIdx.y; @@ -43,17 +43,19 @@ adddmi(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ Hz, if (ix-1 >= 0 || PBCx) { m1 = make_float3(mx[i_], my[i_], mz[i_]); } - int r1 = is0(m1)? r0 : regions[i_]; // don't use inter region params if m1=0 - float A1 = aLUT2d[symidx(r0, r1)]; // inter-region Aex - float D1 = dLUT2d[symidx(r0, r1)]; // inter-region Dex - if (is0(m1)) { // neighbor missing - m1.x = m0.x - (-cx * (0.5f*D1/A1) * m0.z); // extrapolate missing m from BC's - m1.y = m0.y; - m1.z = m0.z + (-cx * (0.5f*D1/A1) * m0.x); + int r1 = is0(m1)? r0 : regions[i_]; // don't use inter region params if m1=0 + float A1 = aLUT2d[symidx(r0, r1)]; // inter-region Aex + float D1 = dLUT2d[symidx(r0, r1)]; // inter-region Dex + if (!is0(m1) || !OpenBC){ // do nothing at an open boundary + if (is0(m1)) { // neighbor missing + m1.x = m0.x - (-cx * (0.5f*D1/A1) * m0.z); // extrapolate missing m from Neumann BC's + m1.y = m0.y; + m1.z = m0.z + (-cx * (0.5f*D1/A1) * m0.x); + } + h += (2.0f*A1/(cx*cx)) * (m1 - m0); // exchange + h.x += (D1/cx)*(- m1.z); + h.z -= (D1/cx)*(- m1.x); } - h += (2.0f*A1/(cx*cx)) * (m1 - m0); // exchange - h.x += (D1/cx)*(- m1.z); - h.z -= (D1/cx)*(- m1.x); } { @@ -65,14 +67,16 @@ adddmi(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ Hz, int r2 = is0(m2)? r0 : regions[i_]; float A2 = aLUT2d[symidx(r0, r2)]; float D2 = dLUT2d[symidx(r0, r2)]; - if (is0(m2)) { - m2.x = m0.x - (cx * (0.5f*D2/A2) * m0.z); - m2.y = m0.y; - m2.z = m0.z + (cx * (0.5f*D2/A2) * m0.x); + if (!is0(m2) || !OpenBC){ + if (is0(m2)) { + m2.x = m0.x - (cx * (0.5f*D2/A2) * m0.z); + m2.y = m0.y; + m2.z = m0.z + (cx * (0.5f*D2/A2) * m0.x); + } + h += (2.0f*A2/(cx*cx)) * (m2 - m0); + h.x += (D2/cx)*(m2.z); + h.z -= (D2/cx)*(m2.x); } - h += (2.0f*A2/(cx*cx)) * (m2 - m0); - h.x += (D2/cx)*(m2.z); - h.z -= (D2/cx)*(m2.x); } // y derivatives (along height) @@ -85,14 +89,16 @@ adddmi(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ Hz, int r1 = is0(m1)? r0 : regions[i_]; float A1 = aLUT2d[symidx(r0, r1)]; float D1 = dLUT2d[symidx(r0, r1)]; - if (is0(m1)) { - m1.x = m0.x; - m1.y = m0.y - (-cy * (0.5f*D1/A1) * m0.z); - m1.z = m0.z + (-cy * (0.5f*D1/A1) * m0.y); + if (!is0(m1) || !OpenBC){ + if (is0(m1)) { + m1.x = m0.x; + m1.y = m0.y - (-cy * (0.5f*D1/A1) * m0.z); + m1.z = m0.z + (-cy * (0.5f*D1/A1) * m0.y); + } + h += (2.0f*A1/(cy*cy)) * (m1 - m0); + h.y += (D1/cy)*(- m1.z); + h.z -= (D1/cy)*(- m1.y); } - h += (2.0f*A1/(cy*cy)) * (m1 - m0); - h.y += (D1/cy)*(- m1.z); - h.z -= (D1/cy)*(- m1.y); } { @@ -104,14 +110,16 @@ adddmi(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ Hz, int r2 = is0(m2)? r0 : regions[i_]; float A2 = aLUT2d[symidx(r0, r2)]; float D2 = dLUT2d[symidx(r0, r2)]; - if (is0(m2)) { - m2.x = m0.x; - m2.y = m0.y - (cy * (0.5f*D2/A2) * m0.z); - m2.z = m0.z + (cy * (0.5f*D2/A2) * m0.y); + if (!is0(m2) || !OpenBC){ + if (is0(m2)) { + m2.x = m0.x; + m2.y = m0.y - (cy * (0.5f*D2/A2) * m0.z); + m2.z = m0.z + (cy * (0.5f*D2/A2) * m0.y); + } + h += (2.0f*A2/(cy*cy)) * (m2 - m0); + h.y += (D2/cy)*(m2.z); + h.z -= (D2/cy)*(m2.y); } - h += (2.0f*A2/(cy*cy)) * (m2 - m0); - h.y += (D2/cy)*(m2.z); - h.z -= (D2/cy)*(m2.y); } // only take vertical derivative for 3D sim diff --git a/cuda/dmi.go b/cuda/dmi.go index 226ca5f27..b06346a3d 100644 --- a/cuda/dmi.go +++ b/cuda/dmi.go @@ -10,15 +10,19 @@ import ( // Add effective field of Dzyaloshinskii-Moriya interaction to Beff (Tesla). // According to Bagdanov and Röβler, PRL 87, 3, 2001. eq.8 (out-of-plane symmetry breaking). // See dmi.cu -func AddDMI(Beff *data.Slice, m *data.Slice, Aex_red, Dex_red SymmLUT, Msat MSlice, regions *Bytes, mesh *data.Mesh) { +func AddDMI(Beff *data.Slice, m *data.Slice, Aex_red, Dex_red SymmLUT, Msat MSlice, regions *Bytes, mesh *data.Mesh, OpenBC bool) { cellsize := mesh.CellSize() N := Beff.Size() util.Argument(m.Size() == N) cfg := make3DConf(N) + var openBC byte + if OpenBC { + openBC = 1 + } k_adddmi_async(Beff.DevPtr(X), Beff.DevPtr(Y), Beff.DevPtr(Z), m.DevPtr(X), m.DevPtr(Y), m.DevPtr(Z), Msat.DevPtr(0), Msat.Mul(0), unsafe.Pointer(Aex_red), unsafe.Pointer(Dex_red), regions.Ptr, - float32(cellsize[X]), float32(cellsize[Y]), float32(cellsize[Z]), N[X], N[Y], N[Z], mesh.PBC_code(), cfg) + float32(cellsize[X]), float32(cellsize[Y]), float32(cellsize[Z]), N[X], N[Y], N[Z], mesh.PBC_code(), openBC, cfg) } diff --git a/cuda/dmi_20.ptx b/cuda/dmi_20.ptx deleted file mode 100644 index 293cf719c..000000000 --- a/cuda/dmi_20.ptx +++ /dev/null @@ -1,977 +0,0 @@ -// -// Generated by NVIDIA NVVM Compiler -// Compiler built on Thu Jul 18 02:37:37 2013 (1374107857) -// Cuda compilation tools, release 5.5, V5.5.0 -// - -.version 3.2 -.target sm_20 -.address_size 64 - - .file 1 "/home/ragnarok/go/src/github.com/mumax/3/cuda/dmi.cu", 1508839776, 7336 - .file 2 "/home/ragnarok/go/src/github.com/mumax/3/cuda/amul.h", 1508839776, 760 - .file 3 "/usr/local/cuda-5.5/include/device_functions.h", 1508840273, 185228 - -.visible .func (.param .b32 func_retval0) _Z8inv_MsatPffi( - .param .b64 _Z8inv_MsatPffi_param_0, - .param .b32 _Z8inv_MsatPffi_param_1, - .param .b32 _Z8inv_MsatPffi_param_2 -) -{ - .reg .pred %p<3>; - .reg .s32 %r<2>; - .reg .f32 %f<10>; - .reg .s64 %rd<4>; - - - ld.param.u64 %rd1, [_Z8inv_MsatPffi_param_0]; - ld.param.f32 %f8, [_Z8inv_MsatPffi_param_1]; - ld.param.u32 %r1, [_Z8inv_MsatPffi_param_2]; - .loc 2 21 1 - setp.eq.s64 %p1, %rd1, 0; - @%p1 bra BB0_2; - - mul.wide.s32 %rd2, %r1, 4; - add.s64 %rd3, %rd1, %rd2; - .loc 2 21 1 - ld.f32 %f6, [%rd3]; - mul.f32 %f8, %f6, %f8; - -BB0_2: - .loc 2 22 1 - setp.neu.f32 %p2, %f8, 0f00000000; - @%p2 bra BB0_4; - - mov.f32 %f9, 0f00000000; - bra.uni BB0_5; - -BB0_4: - .loc 2 25 1 - rcp.rn.f32 %f9, %f8; - -BB0_5: - st.param.f32 [func_retval0+0], %f9; - ret; -} - -.visible .entry adddmi( - .param .u64 adddmi_param_0, - .param .u64 adddmi_param_1, - .param .u64 adddmi_param_2, - .param .u64 adddmi_param_3, - .param .u64 adddmi_param_4, - .param .u64 adddmi_param_5, - .param .u64 adddmi_param_6, - .param .f32 adddmi_param_7, - .param .u64 adddmi_param_8, - .param .u64 adddmi_param_9, - .param .u64 adddmi_param_10, - .param .f32 adddmi_param_11, - .param .f32 adddmi_param_12, - .param .f32 adddmi_param_13, - .param .u32 adddmi_param_14, - .param .u32 adddmi_param_15, - .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 -) -{ - .reg .pred %p<48>; - .reg .s16 %rs<17>; - .reg .s32 %r<345>; - .reg .f32 %f<244>; - .reg .s64 %rd<121>; - - - ld.param.u64 %rd5, [adddmi_param_0]; - ld.param.u64 %rd6, [adddmi_param_1]; - ld.param.u64 %rd7, [adddmi_param_2]; - ld.param.u64 %rd8, [adddmi_param_3]; - ld.param.u64 %rd9, [adddmi_param_4]; - ld.param.u64 %rd10, [adddmi_param_5]; - ld.param.u64 %rd11, [adddmi_param_6]; - ld.param.f32 %f242, [adddmi_param_7]; - ld.param.u64 %rd12, [adddmi_param_8]; - ld.param.u64 %rd13, [adddmi_param_9]; - ld.param.u64 %rd14, [adddmi_param_10]; - ld.param.f32 %f107, [adddmi_param_11]; - ld.param.f32 %f108, [adddmi_param_12]; - ld.param.f32 %f109, [adddmi_param_13]; - ld.param.u32 %r75, [adddmi_param_14]; - ld.param.u32 %r76, [adddmi_param_15]; - ld.param.u32 %r77, [adddmi_param_16]; - cvta.to.global.u64 %rd1, %rd14; - cvta.to.global.u64 %rd2, %rd10; - cvta.to.global.u64 %rd3, %rd9; - cvta.to.global.u64 %rd4, %rd8; - .loc 1 21 1 - mov.u32 %r78, %ntid.x; - mov.u32 %r79, %ctaid.x; - mov.u32 %r80, %tid.x; - mad.lo.s32 %r1, %r78, %r79, %r80; - .loc 1 22 1 - mov.u32 %r81, %ntid.y; - mov.u32 %r82, %ctaid.y; - mov.u32 %r83, %tid.y; - mad.lo.s32 %r2, %r81, %r82, %r83; - .loc 1 23 1 - mov.u32 %r84, %ntid.z; - mov.u32 %r85, %ctaid.z; - mov.u32 %r86, %tid.z; - mad.lo.s32 %r3, %r84, %r85, %r86; - .loc 1 25 1 - setp.ge.s32 %p1, %r2, %r76; - setp.ge.s32 %p2, %r1, %r75; - or.pred %p3, %p2, %p1; - .loc 1 25 1 - setp.ge.s32 %p4, %r3, %r77; - or.pred %p5, %p3, %p4; - ld.param.u8 %rs4, [adddmi_param_17]; - .loc 1 25 1 - @%p5 bra BB1_90; - - .loc 1 29 1 - mad.lo.s32 %r87, %r3, %r76, %r2; - mad.lo.s32 %r88, %r87, %r75, %r1; - mul.wide.s32 %rd15, %r88, 4; - add.s64 %rd16, %rd4, %rd15; - cvt.s64.s32 %rd17, %r88; - add.s64 %rd18, %rd3, %rd15; - add.s64 %rd19, %rd2, %rd15; - add.s64 %rd20, %rd1, %rd17; - .loc 1 32 1 - ld.global.u8 %rs1, [%rd20]; - .loc 1 46 1 - cvt.u32.u16 %r89, %rs1; - and.b32 %r4, %r89, 255; - .loc 1 31 1 - ld.global.f32 %f1, [%rd16]; - ld.global.f32 %f2, [%rd18]; - .loc 1 35 1 - mul.f32 %f110, %f2, %f2; - fma.rn.f32 %f111, %f1, %f1, %f110; - .loc 1 31 1 - ld.global.f32 %f3, [%rd19]; - .loc 1 35 1 - fma.rn.f32 %f112, %f3, %f3, %f111; - setp.eq.f32 %p6, %f112, 0f00000000; - @%p6 bra BB1_90; - - .loc 1 42 1 - add.s32 %r5, %r1, -1; - and.b16 %rs5, %rs4, 1; - setp.eq.b16 %p7, %rs5, 1; - @!%p7 bra BB1_4; - bra.uni BB1_3; - -BB1_3: - rem.s32 %r94, %r5, %r75; - add.s32 %r95, %r94, %r75; - rem.s32 %r322, %r95, %r75; - bra.uni BB1_5; - -BB1_4: - mov.u32 %r96, 0; - .loc 3 2642 10 - max.s32 %r322, %r5, %r96; - -BB1_5: - .loc 1 42 226 - mad.lo.s32 %r9, %r87, %r75, %r322; - .loc 1 43 1 - setp.gt.s32 %p8, %r1, 0; - or.pred %p10, %p8, %p7; - @%p10 bra BB1_7; - - mov.f32 %f212, 0f00000000; - mov.f32 %f219, %f212; - mov.f32 %f211, %f212; - bra.uni BB1_8; - -BB1_7: - mul.wide.s32 %rd22, %r9, 4; - add.s64 %rd23, %rd4, %rd22; - .loc 1 44 1 - ld.global.f32 %f211, [%rd23]; - add.s64 %rd25, %rd3, %rd22; - .loc 1 44 1 - ld.global.f32 %f219, [%rd25]; - add.s64 %rd27, %rd2, %rd22; - .loc 1 44 1 - ld.global.f32 %f212, [%rd27]; - -BB1_8: - .loc 1 46 1 - mov.f32 %f218, %f219; - mul.f32 %f116, %f218, %f218; - fma.rn.f32 %f117, %f211, %f211, %f116; - fma.rn.f32 %f10, %f212, %f212, %f117; - setp.eq.f32 %p11, %f10, 0f00000000; - mov.u32 %r338, %r4; - @%p11 bra BB1_10; - - cvt.s64.s32 %rd29, %r9; - add.s64 %rd30, %rd1, %rd29; - .loc 1 46 1 - ld.global.u8 %r10, [%rd30]; - mov.u32 %r338, %r10; - -BB1_10: - .loc 1 46 1 - mov.u32 %r11, %r338; - .loc 1 47 1 - setp.gt.u32 %p12, %r11, %r4; - @%p12 bra BB1_12; - - add.s32 %r110, %r4, 1; - mul.lo.s32 %r111, %r110, %r4; - shr.u32 %r112, %r111, 31; - add.s32 %r113, %r111, %r112; - shr.s32 %r114, %r113, 1; - add.s32 %r323, %r114, %r11; - bra.uni BB1_13; - -BB1_12: - .loc 1 47 1 - add.s32 %r115, %r11, 1; - mul.lo.s32 %r116, %r115, %r11; - shr.u32 %r117, %r116, 31; - add.s32 %r118, %r116, %r117; - shr.s32 %r119, %r118, 1; - add.s32 %r323, %r119, %r4; - -BB1_13: - cvta.to.global.u64 %rd31, %rd12; - mul.wide.s32 %rd32, %r323, 4; - add.s64 %rd33, %rd31, %rd32; - .loc 1 47 1 - ld.global.f32 %f11, [%rd33]; - .loc 1 48 1 - @%p12 bra BB1_15; - - add.s32 %r120, %r4, 1; - mul.lo.s32 %r121, %r120, %r4; - shr.u32 %r122, %r121, 31; - add.s32 %r123, %r121, %r122; - shr.s32 %r124, %r123, 1; - add.s32 %r324, %r124, %r11; - bra.uni BB1_16; - -BB1_15: - .loc 1 48 1 - add.s32 %r125, %r11, 1; - mul.lo.s32 %r126, %r125, %r11; - shr.u32 %r127, %r126, 31; - add.s32 %r128, %r126, %r127; - shr.s32 %r129, %r128, 1; - add.s32 %r324, %r129, %r4; - -BB1_16: - cvta.to.global.u64 %rd34, %rd13; - mul.wide.s32 %rd35, %r324, 4; - add.s64 %rd36, %rd34, %rd35; - .loc 1 48 1 - ld.global.f32 %f12, [%rd36]; - .loc 1 49 1 - setp.neu.f32 %p14, %f10, 0f00000000; - @%p14 bra BB1_18; - - .loc 1 50 1 - mul.f32 %f118, %f12, 0fBF000000; - .loc 3 3608 3 - div.rn.f32 %f119, %f118, %f11; - .loc 1 50 111 - mul.f32 %f120, %f119, %f107; - mul.f32 %f121, %f120, %f3; - sub.f32 %f211, %f1, %f121; - .loc 1 52 111 - fma.rn.f32 %f212, %f120, %f1, %f3; - mov.f32 %f218, %f2; - -BB1_18: - .loc 1 54 1 - mul.f32 %f18, %f107, %f107; - add.f32 %f122, %f11, %f11; - .loc 3 3608 3 - div.rn.f32 %f123, %f122, %f18; - .loc 1 54 31 - sub.f32 %f124, %f211, %f1; - sub.f32 %f125, %f218, %f2; - sub.f32 %f126, %f212, %f3; - .loc 1 54 1 - fma.rn.f32 %f127, %f123, %f124, 0f00000000; - fma.rn.f32 %f19, %f123, %f125, 0f00000000; - fma.rn.f32 %f128, %f123, %f126, 0f00000000; - .loc 3 3608 3 - div.rn.f32 %f129, %f12, %f107; - .loc 1 55 56 - mul.f32 %f130, %f129, %f212; - sub.f32 %f20, %f127, %f130; - .loc 1 56 56 - fma.rn.f32 %f21, %f129, %f211, %f128; - .loc 1 61 1 - add.s32 %r18, %r1, 1; - @!%p7 bra BB1_20; - bra.uni BB1_19; - -BB1_19: - rem.s32 %r134, %r18, %r75; - add.s32 %r135, %r134, %r75; - rem.s32 %r325, %r135, %r75; - bra.uni BB1_21; - -BB1_20: - .loc 1 61 1 - add.s32 %r136, %r75, -1; - .loc 3 2621 10 - min.s32 %r325, %r18, %r136; - -BB1_21: - .loc 1 61 226 - mad.lo.s32 %r22, %r87, %r75, %r325; - .loc 1 62 1 - setp.lt.s32 %p17, %r18, %r75; - or.pred %p18, %p17, %p7; - @%p18 bra BB1_23; - - mov.f32 %f221, 0f00000000; - mov.f32 %f220, %f221; - mov.f32 %f213, %f221; - bra.uni BB1_24; - -BB1_23: - mul.wide.s32 %rd38, %r22, 4; - add.s64 %rd39, %rd4, %rd38; - .loc 1 63 1 - ld.global.f32 %f213, [%rd39]; - add.s64 %rd41, %rd3, %rd38; - .loc 1 63 1 - ld.global.f32 %f220, [%rd41]; - add.s64 %rd43, %rd2, %rd38; - .loc 1 63 1 - ld.global.f32 %f221, [%rd43]; - -BB1_24: - .loc 1 65 1 - mov.f32 %f26, %f220; - mul.f32 %f134, %f26, %f26; - fma.rn.f32 %f135, %f213, %f213, %f134; - fma.rn.f32 %f28, %f221, %f221, %f135; - setp.eq.f32 %p19, %f28, 0f00000000; - mov.u32 %r337, %r4; - @%p19 bra BB1_26; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd1, %rd45; - .loc 1 65 1 - ld.global.u8 %r337, [%rd46]; - -BB1_26: - .loc 1 66 1 - setp.gt.u32 %p20, %r337, %r4; - @%p20 bra BB1_28; - - add.s32 %r146, %r4, 1; - mul.lo.s32 %r147, %r146, %r4; - shr.u32 %r148, %r147, 31; - add.s32 %r149, %r147, %r148; - shr.s32 %r150, %r149, 1; - add.s32 %r326, %r150, %r337; - bra.uni BB1_29; - -BB1_28: - .loc 1 66 1 - add.s32 %r151, %r337, 1; - mul.lo.s32 %r152, %r151, %r337; - shr.u32 %r153, %r152, 31; - add.s32 %r154, %r152, %r153; - shr.s32 %r155, %r154, 1; - add.s32 %r326, %r155, %r4; - -BB1_29: - mul.wide.s32 %rd48, %r326, 4; - add.s64 %rd49, %rd31, %rd48; - .loc 1 66 1 - ld.global.f32 %f29, [%rd49]; - .loc 1 67 1 - @%p20 bra BB1_31; - - add.s32 %r156, %r4, 1; - mul.lo.s32 %r157, %r156, %r4; - shr.u32 %r158, %r157, 31; - add.s32 %r159, %r157, %r158; - shr.s32 %r160, %r159, 1; - add.s32 %r327, %r160, %r337; - bra.uni BB1_32; - -BB1_31: - .loc 1 67 1 - add.s32 %r161, %r337, 1; - mul.lo.s32 %r162, %r161, %r337; - shr.u32 %r163, %r162, 31; - add.s32 %r164, %r162, %r163; - shr.s32 %r165, %r164, 1; - add.s32 %r327, %r165, %r4; - -BB1_32: - mul.wide.s32 %rd51, %r327, 4; - add.s64 %rd52, %rd34, %rd51; - .loc 1 67 1 - ld.global.f32 %f30, [%rd52]; - .loc 1 68 1 - setp.neu.f32 %p22, %f28, 0f00000000; - mov.f32 %f217, %f26; - @%p22 bra BB1_34; - - .loc 1 69 1 - mul.f32 %f136, %f30, 0f3F000000; - .loc 3 3608 3 - div.rn.f32 %f137, %f136, %f29; - .loc 1 69 108 - mul.f32 %f138, %f137, %f107; - mul.f32 %f139, %f138, %f3; - sub.f32 %f213, %f1, %f139; - .loc 1 71 108 - fma.rn.f32 %f221, %f138, %f1, %f3; - mov.f32 %f217, %f2; - -BB1_34: - .loc 1 73 1 - mov.f32 %f34, %f217; - add.f32 %f140, %f29, %f29; - .loc 3 3608 3 - div.rn.f32 %f141, %f140, %f18; - .loc 1 73 31 - sub.f32 %f142, %f213, %f1; - sub.f32 %f143, %f34, %f2; - sub.f32 %f144, %f221, %f3; - .loc 1 73 1 - fma.rn.f32 %f145, %f141, %f142, %f20; - fma.rn.f32 %f36, %f141, %f143, %f19; - fma.rn.f32 %f146, %f141, %f144, %f21; - .loc 3 3608 3 - div.rn.f32 %f147, %f30, %f107; - .loc 1 74 56 - fma.rn.f32 %f37, %f147, %f221, %f145; - .loc 1 75 56 - mul.f32 %f148, %f147, %f213; - sub.f32 %f38, %f146, %f148; - .loc 1 81 1 - and.b16 %rs2, %rs4, 2; - setp.eq.s16 %p23, %rs2, 0; - add.s32 %r31, %r2, -1; - @%p23 bra BB1_36; - - rem.s32 %r170, %r31, %r76; - add.s32 %r171, %r170, %r76; - rem.s32 %r328, %r171, %r76; - bra.uni BB1_37; - -BB1_36: - mov.u32 %r172, 0; - .loc 3 2642 10 - max.s32 %r328, %r31, %r172; - -BB1_37: - .loc 1 81 179 - mad.lo.s32 %r177, %r3, %r76, %r328; - mad.lo.s32 %r35, %r177, %r75, %r1; - .loc 1 82 1 - setp.gt.s32 %p24, %r2, 0; - and.b16 %rs9, %rs2, 255; - setp.ne.s16 %p25, %rs9, 0; - or.pred %p26, %p24, %p25; - @%p26 bra BB1_39; - - mov.f32 %f223, 0f00000000; - mov.f32 %f222, %f223; - mov.f32 %f229, %f223; - bra.uni BB1_40; - -BB1_39: - mul.wide.s32 %rd54, %r35, 4; - add.s64 %rd55, %rd4, %rd54; - .loc 1 83 1 - ld.global.f32 %f229, [%rd55]; - add.s64 %rd57, %rd3, %rd54; - .loc 1 83 1 - ld.global.f32 %f222, [%rd57]; - add.s64 %rd59, %rd2, %rd54; - .loc 1 83 1 - ld.global.f32 %f223, [%rd59]; - -BB1_40: - .loc 1 85 1 - mov.f32 %f228, %f229; - mul.f32 %f152, %f222, %f222; - fma.rn.f32 %f153, %f228, %f228, %f152; - fma.rn.f32 %f45, %f223, %f223, %f153; - setp.eq.f32 %p27, %f45, 0f00000000; - mov.u32 %r336, %r4; - @%p27 bra BB1_42; - - cvt.s64.s32 %rd61, %r35; - add.s64 %rd62, %rd1, %rd61; - .loc 1 85 1 - ld.global.u8 %r336, [%rd62]; - -BB1_42: - .loc 1 86 1 - setp.gt.u32 %p28, %r336, %r4; - @%p28 bra BB1_44; - - add.s32 %r186, %r4, 1; - mul.lo.s32 %r187, %r186, %r4; - shr.u32 %r188, %r187, 31; - add.s32 %r189, %r187, %r188; - shr.s32 %r190, %r189, 1; - add.s32 %r329, %r190, %r336; - bra.uni BB1_45; - -BB1_44: - .loc 1 86 1 - add.s32 %r191, %r336, 1; - mul.lo.s32 %r192, %r191, %r336; - shr.u32 %r193, %r192, 31; - add.s32 %r194, %r192, %r193; - shr.s32 %r195, %r194, 1; - add.s32 %r329, %r195, %r4; - -BB1_45: - mul.wide.s32 %rd64, %r329, 4; - add.s64 %rd65, %rd31, %rd64; - .loc 1 86 1 - ld.global.f32 %f46, [%rd65]; - .loc 1 87 1 - @%p28 bra BB1_47; - - add.s32 %r196, %r4, 1; - mul.lo.s32 %r197, %r196, %r4; - shr.u32 %r198, %r197, 31; - add.s32 %r199, %r197, %r198; - shr.s32 %r200, %r199, 1; - add.s32 %r330, %r200, %r336; - bra.uni BB1_48; - -BB1_47: - .loc 1 87 1 - add.s32 %r201, %r336, 1; - mul.lo.s32 %r202, %r201, %r336; - shr.u32 %r203, %r202, 31; - add.s32 %r204, %r202, %r203; - shr.s32 %r205, %r204, 1; - add.s32 %r330, %r205, %r4; - -BB1_48: - mul.wide.s32 %rd67, %r330, 4; - add.s64 %rd68, %rd34, %rd67; - .loc 1 87 1 - ld.global.f32 %f47, [%rd68]; - .loc 1 88 1 - setp.neu.f32 %p30, %f45, 0f00000000; - @%p30 bra BB1_50; - - .loc 1 90 1 - mul.f32 %f154, %f47, 0fBF000000; - .loc 3 3608 3 - div.rn.f32 %f155, %f154, %f46; - .loc 1 90 111 - mul.f32 %f156, %f155, %f108; - mul.f32 %f157, %f156, %f3; - sub.f32 %f222, %f2, %f157; - .loc 1 91 111 - fma.rn.f32 %f223, %f156, %f2, %f3; - mov.f32 %f228, %f1; - -BB1_50: - .loc 1 93 1 - mul.f32 %f53, %f108, %f108; - add.f32 %f158, %f46, %f46; - .loc 3 3608 3 - div.rn.f32 %f159, %f158, %f53; - .loc 1 93 31 - sub.f32 %f160, %f228, %f1; - sub.f32 %f161, %f222, %f2; - sub.f32 %f162, %f223, %f3; - .loc 1 93 1 - fma.rn.f32 %f54, %f159, %f160, %f37; - fma.rn.f32 %f163, %f159, %f161, %f36; - fma.rn.f32 %f164, %f159, %f162, %f38; - .loc 3 3608 3 - div.rn.f32 %f165, %f47, %f108; - .loc 1 94 56 - mul.f32 %f166, %f165, %f223; - sub.f32 %f55, %f163, %f166; - .loc 1 95 56 - fma.rn.f32 %f56, %f165, %f222, %f164; - .loc 1 100 1 - add.s32 %r44, %r2, 1; - setp.eq.s16 %p31, %rs9, 0; - .loc 1 100 1 - @%p31 bra BB1_52; - - rem.s32 %r210, %r44, %r76; - add.s32 %r211, %r210, %r76; - rem.s32 %r331, %r211, %r76; - bra.uni BB1_53; - -BB1_52: - .loc 1 100 1 - add.s32 %r212, %r76, -1; - .loc 3 2621 10 - min.s32 %r331, %r44, %r212; - -BB1_53: - .loc 1 100 179 - mad.lo.s32 %r217, %r3, %r76, %r331; - mad.lo.s32 %r48, %r217, %r75, %r1; - .loc 1 101 1 - setp.lt.s32 %p32, %r44, %r76; - or.pred %p34, %p32, %p25; - @%p34 bra BB1_55; - - mov.f32 %f232, 0f00000000; - mov.f32 %f231, %f232; - mov.f32 %f230, %f232; - bra.uni BB1_56; - -BB1_55: - mul.wide.s32 %rd70, %r48, 4; - add.s64 %rd71, %rd4, %rd70; - .loc 1 102 1 - ld.global.f32 %f230, [%rd71]; - add.s64 %rd73, %rd3, %rd70; - .loc 1 102 1 - ld.global.f32 %f231, [%rd73]; - add.s64 %rd75, %rd2, %rd70; - .loc 1 102 1 - ld.global.f32 %f232, [%rd75]; - -BB1_56: - .loc 1 104 1 - mov.f32 %f60, %f230; - mul.f32 %f170, %f231, %f231; - fma.rn.f32 %f171, %f60, %f60, %f170; - fma.rn.f32 %f63, %f232, %f232, %f171; - setp.eq.f32 %p35, %f63, 0f00000000; - mov.u32 %r335, %r4; - @%p35 bra BB1_58; - - cvt.s64.s32 %rd77, %r48; - add.s64 %rd78, %rd1, %rd77; - .loc 1 104 1 - ld.global.u8 %r335, [%rd78]; - -BB1_58: - .loc 1 105 1 - setp.gt.u32 %p36, %r335, %r4; - @%p36 bra BB1_60; - - add.s32 %r222, %r4, 1; - mul.lo.s32 %r223, %r222, %r4; - shr.u32 %r224, %r223, 31; - add.s32 %r225, %r223, %r224; - shr.s32 %r226, %r225, 1; - add.s32 %r339, %r226, %r335; - bra.uni BB1_61; - -BB1_60: - .loc 1 105 1 - add.s32 %r227, %r335, 1; - mul.lo.s32 %r228, %r227, %r335; - shr.u32 %r229, %r228, 31; - add.s32 %r230, %r228, %r229; - shr.s32 %r231, %r230, 1; - add.s32 %r339, %r231, %r4; - -BB1_61: - mul.wide.s32 %rd80, %r339, 4; - add.s64 %rd81, %rd31, %rd80; - .loc 1 105 1 - ld.global.f32 %f64, [%rd81]; - .loc 1 106 1 - @%p36 bra BB1_63; - - add.s32 %r232, %r4, 1; - mul.lo.s32 %r233, %r232, %r4; - shr.u32 %r234, %r233, 31; - add.s32 %r235, %r233, %r234; - shr.s32 %r236, %r235, 1; - add.s32 %r340, %r236, %r335; - bra.uni BB1_64; - -BB1_63: - .loc 1 106 1 - add.s32 %r237, %r335, 1; - mul.lo.s32 %r238, %r237, %r335; - shr.u32 %r239, %r238, 31; - add.s32 %r240, %r238, %r239; - shr.s32 %r241, %r240, 1; - add.s32 %r340, %r241, %r4; - -BB1_64: - mul.wide.s32 %rd83, %r340, 4; - add.s64 %rd84, %rd34, %rd83; - .loc 1 106 1 - ld.global.f32 %f65, [%rd84]; - .loc 1 107 1 - setp.neu.f32 %p38, %f63, 0f00000000; - mov.f32 %f227, %f60; - @%p38 bra BB1_66; - - .loc 1 109 1 - mul.f32 %f172, %f65, 0f3F000000; - .loc 3 3608 3 - div.rn.f32 %f173, %f172, %f64; - .loc 1 109 108 - mul.f32 %f174, %f173, %f108; - mul.f32 %f175, %f174, %f3; - sub.f32 %f231, %f2, %f175; - .loc 1 110 108 - fma.rn.f32 %f232, %f174, %f2, %f3; - mov.f32 %f227, %f1; - -BB1_66: - .loc 1 112 1 - mov.f32 %f68, %f227; - add.f32 %f176, %f64, %f64; - .loc 3 3608 3 - div.rn.f32 %f177, %f176, %f53; - .loc 1 112 31 - sub.f32 %f178, %f68, %f1; - sub.f32 %f179, %f231, %f2; - sub.f32 %f180, %f232, %f3; - .loc 1 112 1 - fma.rn.f32 %f241, %f177, %f178, %f54; - fma.rn.f32 %f181, %f177, %f179, %f55; - fma.rn.f32 %f182, %f177, %f180, %f56; - .loc 3 3608 3 - div.rn.f32 %f183, %f65, %f108; - .loc 1 113 56 - fma.rn.f32 %f240, %f183, %f232, %f181; - .loc 1 114 56 - mul.f32 %f184, %f183, %f231; - sub.f32 %f239, %f182, %f184; - .loc 1 118 1 - setp.eq.s32 %p39, %r77, 1; - @%p39 bra BB1_84; - - .loc 1 121 1 - and.b16 %rs3, %rs4, 4; - setp.eq.s16 %p40, %rs3, 0; - add.s32 %r57, %r3, -1; - @%p40 bra BB1_69; - - rem.s32 %r246, %r57, %r77; - add.s32 %r247, %r246, %r77; - rem.s32 %r341, %r247, %r77; - bra.uni BB1_70; - -BB1_69: - mov.u32 %r248, 0; - .loc 3 2642 10 - max.s32 %r341, %r57, %r248; - -BB1_70: - .loc 1 121 133 - mad.lo.s32 %r253, %r341, %r76, %r2; - mad.lo.s32 %r61, %r253, %r75, %r1; - mul.wide.s32 %rd86, %r61, 4; - add.s64 %rd87, %rd4, %rd86; - add.s64 %rd89, %rd3, %rd86; - add.s64 %rd91, %rd2, %rd86; - .loc 1 122 1 - ld.global.f32 %f233, [%rd87]; - ld.global.f32 %f234, [%rd89]; - ld.global.f32 %f235, [%rd91]; - .loc 1 123 1 - mul.f32 %f185, %f234, %f234; - fma.rn.f32 %f186, %f233, %f233, %f185; - fma.rn.f32 %f187, %f235, %f235, %f186; - setp.neu.f32 %p41, %f187, 0f00000000; - @%p41 bra BB1_72; - - mov.f32 %f235, %f3; - mov.f32 %f234, %f2; - mov.f32 %f233, %f1; - -BB1_72: - cvt.s64.s32 %rd93, %r61; - add.s64 %rd94, %rd1, %rd93; - .loc 1 124 1 - ld.global.u8 %rs12, [%rd94]; - and.b16 %rs13, %rs1, 255; - setp.gt.u16 %p42, %rs12, %rs13; - cvt.u32.u16 %r62, %rs12; - @%p42 bra BB1_74; - - add.s32 %r258, %r4, 1; - mul.lo.s32 %r259, %r258, %r4; - shr.u32 %r260, %r259, 31; - add.s32 %r261, %r259, %r260; - shr.s32 %r262, %r261, 1; - add.s32 %r342, %r62, %r262; - bra.uni BB1_75; - -BB1_74: - .loc 1 124 1 - add.s32 %r263, %r62, 1; - mul.lo.s32 %r264, %r263, %r62; - shr.u32 %r265, %r264, 31; - add.s32 %r266, %r264, %r265; - shr.s32 %r267, %r266, 1; - add.s32 %r342, %r267, %r4; - -BB1_75: - mul.wide.s32 %rd96, %r342, 4; - add.s64 %rd97, %rd31, %rd96; - .loc 1 124 1 - ld.global.f32 %f188, [%rd97]; - .loc 1 125 1 - add.f32 %f189, %f188, %f188; - mul.f32 %f83, %f109, %f109; - .loc 3 3608 3 - div.rn.f32 %f190, %f189, %f83; - .loc 1 125 33 - sub.f32 %f191, %f233, %f1; - sub.f32 %f192, %f234, %f2; - sub.f32 %f193, %f235, %f3; - .loc 1 125 1 - fma.rn.f32 %f84, %f190, %f191, %f241; - fma.rn.f32 %f85, %f190, %f192, %f240; - fma.rn.f32 %f86, %f190, %f193, %f239; - .loc 1 130 1 - add.s32 %r66, %r3, 1; - and.b16 %rs14, %rs3, 255; - setp.eq.s16 %p43, %rs14, 0; - .loc 1 130 1 - @%p43 bra BB1_77; - - rem.s32 %r272, %r66, %r77; - add.s32 %r273, %r272, %r77; - rem.s32 %r343, %r273, %r77; - bra.uni BB1_78; - -BB1_77: - .loc 1 130 1 - add.s32 %r274, %r77, -1; - .loc 3 2621 10 - min.s32 %r343, %r66, %r274; - -BB1_78: - .loc 1 130 133 - mad.lo.s32 %r279, %r343, %r76, %r2; - mad.lo.s32 %r70, %r279, %r75, %r1; - mul.wide.s32 %rd99, %r70, 4; - add.s64 %rd100, %rd4, %rd99; - add.s64 %rd102, %rd3, %rd99; - add.s64 %rd104, %rd2, %rd99; - .loc 1 131 1 - ld.global.f32 %f236, [%rd100]; - ld.global.f32 %f237, [%rd102]; - ld.global.f32 %f238, [%rd104]; - .loc 1 132 1 - mul.f32 %f194, %f237, %f237; - fma.rn.f32 %f195, %f236, %f236, %f194; - fma.rn.f32 %f196, %f238, %f238, %f195; - setp.neu.f32 %p44, %f196, 0f00000000; - @%p44 bra BB1_80; - - mov.f32 %f238, %f3; - mov.f32 %f237, %f2; - mov.f32 %f236, %f1; - -BB1_80: - cvt.s64.s32 %rd106, %r70; - add.s64 %rd107, %rd1, %rd106; - .loc 1 133 1 - ld.global.u8 %rs15, [%rd107]; - setp.gt.u16 %p45, %rs15, %rs13; - cvt.u32.u16 %r71, %rs15; - @%p45 bra BB1_82; - - add.s32 %r284, %r4, 1; - mul.lo.s32 %r285, %r284, %r4; - shr.u32 %r286, %r285, 31; - add.s32 %r287, %r285, %r286; - shr.s32 %r288, %r287, 1; - add.s32 %r344, %r71, %r288; - bra.uni BB1_83; - -BB1_82: - .loc 1 133 1 - add.s32 %r289, %r71, 1; - mul.lo.s32 %r290, %r289, %r71; - shr.u32 %r291, %r290, 31; - add.s32 %r292, %r290, %r291; - shr.s32 %r293, %r292, 1; - add.s32 %r344, %r293, %r4; - -BB1_83: - mul.wide.s32 %rd109, %r344, 4; - add.s64 %rd110, %rd31, %rd109; - .loc 1 133 1 - ld.global.f32 %f197, [%rd110]; - .loc 1 134 1 - add.f32 %f198, %f197, %f197; - .loc 3 3608 3 - div.rn.f32 %f199, %f198, %f83; - .loc 1 134 33 - sub.f32 %f200, %f236, %f1; - sub.f32 %f201, %f237, %f2; - sub.f32 %f202, %f238, %f3; - .loc 1 134 1 - fma.rn.f32 %f241, %f199, %f200, %f84; - fma.rn.f32 %f240, %f199, %f201, %f85; - fma.rn.f32 %f239, %f199, %f202, %f86; - -BB1_84: - .loc 2 21 1 - setp.eq.s64 %p46, %rd11, 0; - @%p46 bra BB1_86; - - cvta.to.global.u64 %rd111, %rd11; - mul.wide.s32 %rd112, %r88, 4; - add.s64 %rd113, %rd111, %rd112; - .loc 2 21 1 - ld.global.f32 %f203, [%rd113]; - mul.f32 %f242, %f203, %f242; - -BB1_86: - .loc 2 22 1 - setp.neu.f32 %p47, %f242, 0f00000000; - @%p47 bra BB1_88; - - mov.f32 %f243, 0f00000000; - bra.uni BB1_89; - -BB1_88: - .loc 2 25 1 - rcp.rn.f32 %f243, %f242; - -BB1_89: - cvta.to.global.u64 %rd114, %rd5; - mul.wide.s32 %rd115, %r88, 4; - add.s64 %rd116, %rd114, %rd115; - .loc 1 140 1 - ld.global.f32 %f205, [%rd116]; - fma.rn.f32 %f206, %f241, %f243, %f205; - st.global.f32 [%rd116], %f206; - cvta.to.global.u64 %rd117, %rd6; - add.s64 %rd118, %rd117, %rd115; - .loc 1 141 1 - ld.global.f32 %f207, [%rd118]; - fma.rn.f32 %f208, %f240, %f243, %f207; - st.global.f32 [%rd118], %f208; - cvta.to.global.u64 %rd119, %rd7; - add.s64 %rd120, %rd119, %rd115; - .loc 1 142 1 - ld.global.f32 %f209, [%rd120]; - fma.rn.f32 %f210, %f239, %f243, %f209; - st.global.f32 [%rd120], %f210; - -BB1_90: - .loc 1 143 2 - ret; -} - - diff --git a/cuda/dmi_30.ptx b/cuda/dmi_30.ptx index 99d6fa369..566f4f99d 100644 --- a/cuda/dmi_30.ptx +++ b/cuda/dmi_30.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_30 .address_size 64 @@ -30,13 +30,14 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<37>; - .reg .f32 %f<234>; - .reg .b32 %r<236>; + .reg .pred %p<57>; + .reg .b16 %rs<39>; + .reg .f32 %f<263>; + .reg .b32 %r<219>; .reg .b64 %rd<117>; @@ -47,544 +48,580 @@ ld.param.u64 %rd5, [adddmi_param_4]; ld.param.u64 %rd6, [adddmi_param_5]; ld.param.u64 %rd7, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd8, [adddmi_param_8]; ld.param.u64 %rd9, [adddmi_param_9]; ld.param.u64 %rd10, [adddmi_param_10]; - ld.param.f32 %f89, [adddmi_param_11]; - ld.param.f32 %f90, [adddmi_param_12]; - ld.param.f32 %f91, [adddmi_param_13]; - ld.param.u32 %r32, [adddmi_param_14]; - ld.param.u32 %r33, [adddmi_param_15]; - ld.param.u32 %r34, [adddmi_param_16]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; + ld.param.u32 %r33, [adddmi_param_14]; + ld.param.u32 %r34, [adddmi_param_15]; + ld.param.u32 %r35, [adddmi_param_16]; + ld.param.u8 %rs13, [adddmi_param_18]; ld.param.u8 %rs12, [adddmi_param_17]; - mov.u32 %r35, %ntid.x; - mov.u32 %r36, %ctaid.x; - mov.u32 %r37, %tid.x; - mad.lo.s32 %r1, %r35, %r36, %r37; - mov.u32 %r38, %ntid.y; - mov.u32 %r39, %ctaid.y; - mov.u32 %r40, %tid.y; - mad.lo.s32 %r2, %r38, %r39, %r40; - mov.u32 %r41, %ntid.z; - mov.u32 %r42, %ctaid.z; - mov.u32 %r43, %tid.z; - mad.lo.s32 %r3, %r41, %r42, %r43; - setp.ge.s32 %p1, %r2, %r33; - setp.ge.s32 %p2, %r1, %r32; + mov.u32 %r36, %ntid.x; + mov.u32 %r37, %ctaid.x; + mov.u32 %r38, %tid.x; + mad.lo.s32 %r1, %r36, %r37, %r38; + mov.u32 %r39, %ntid.y; + mov.u32 %r40, %ctaid.y; + mov.u32 %r41, %tid.y; + mad.lo.s32 %r2, %r39, %r40, %r41; + mov.u32 %r42, %ntid.z; + mov.u32 %r43, %ctaid.z; + mov.u32 %r44, %tid.z; + mad.lo.s32 %r3, %r42, %r43, %r44; + setp.ge.s32 %p1, %r2, %r34; + setp.ge.s32 %p2, %r1, %r33; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r34; + setp.ge.s32 %p4, %r3, %r35; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; cvta.to.global.u64 %rd11, %rd10; cvta.to.global.u64 %rd12, %rd6; cvta.to.global.u64 %rd13, %rd5; cvta.to.global.u64 %rd14, %rd4; - mad.lo.s32 %r44, %r3, %r33, %r2; - mad.lo.s32 %r45, %r44, %r32, %r1; - mul.wide.s32 %rd15, %r45, 4; + mad.lo.s32 %r45, %r3, %r34, %r2; + mul.lo.s32 %r4, %r45, %r33; + add.s32 %r46, %r4, %r1; + mul.wide.s32 %rd15, %r46, 4; add.s64 %rd16, %rd14, %rd15; - cvt.s64.s32 %rd17, %r45; + cvt.s64.s32 %rd17, %r46; add.s64 %rd18, %rd13, %rd15; add.s64 %rd19, %rd12, %rd15; add.s64 %rd20, %rd11, %rd17; ld.global.u8 %rs1, [%rd20]; ld.global.f32 %f1, [%rd16]; ld.global.f32 %f2, [%rd18]; - mul.f32 %f92, %f2, %f2; - fma.rn.f32 %f93, %f1, %f1, %f92; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.f32 %f3, [%rd19]; - fma.rn.f32 %f94, %f3, %f3, %f93; - setp.eq.f32 %p6, %f94, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; - and.b16 %rs13, %rs12, 1; - setp.eq.b16 %p7, %rs13, 1; - add.s32 %r4, %r1, -1; + and.b16 %rs14, %rs12, 1; + setp.eq.b16 %p7, %rs14, 1; + add.s32 %r5, %r1, -1; @!%p7 bra BB0_4; bra.uni BB0_3; BB0_3: - rem.s32 %r50, %r4, %r32; - add.s32 %r51, %r50, %r32; - rem.s32 %r230, %r51, %r32; + rem.s32 %r51, %r5, %r33; + add.s32 %r52, %r51, %r33; + rem.s32 %r213, %r52, %r33; bra.uni BB0_5; BB0_4: - mov.u32 %r52, 0; - max.s32 %r230, %r4, %r52; + mov.u32 %r53, 0; + max.s32 %r213, %r5, %r53; BB0_5: - mad.lo.s32 %r8, %r44, %r32, %r230; - setp.eq.b16 %p8, %rs13, 1; - setp.gt.s32 %p9, %r4, -1; + add.s32 %r9, %r213, %r4; + setp.eq.b16 %p8, %rs14, 1; + setp.gt.s32 %p9, %r5, -1; or.pred %p10, %p9, %p8; - mov.f32 %f208, 0f00000000; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f225, 0f00000000; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @!%p10 bra BB0_7; bra.uni BB0_6; BB0_6: - mul.wide.s32 %rd22, %r8, 4; + mul.wide.s32 %rd22, %r9, 4; add.s64 %rd23, %rd14, %rd22; - ld.global.f32 %f208, [%rd23]; + ld.global.f32 %f225, [%rd23]; add.s64 %rd25, %rd13, %rd22; - ld.global.f32 %f209, [%rd25]; + ld.global.f32 %f226, [%rd25]; add.s64 %rd27, %rd12, %rd22; - ld.global.f32 %f210, [%rd27]; + ld.global.f32 %f227, [%rd27]; BB0_7: - mul.f32 %f98, %f209, %f209; - fma.rn.f32 %f99, %f208, %f208, %f98; - fma.rn.f32 %f10, %f210, %f210, %f99; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs33, %rs1; + mov.u16 %rs35, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd29, %r8; + cvt.s64.s32 %rd29, %r9; add.s64 %rd30, %rd11, %rd29; - ld.global.u8 %rs33, [%rd30]; + ld.global.u8 %rs35, [%rd30]; BB0_9: - cvt.u32.u16 %r62, %rs1; - and.b32 %r63, %r62, 255; - setp.gt.u16 %p12, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; - and.b32 %r65, %r64, 255; - selp.b32 %r66, %r63, %r65, %p12; - selp.b32 %r67, %r65, %r63, %p12; - add.s32 %r68, %r67, 1; - mul.lo.s32 %r69, %r68, %r67; - shr.u32 %r70, %r69, 1; - add.s32 %r71, %r70, %r66; + cvt.u32.u16 %r54, %rs1; + and.b32 %r55, %r54, 255; + setp.gt.u16 %p12, %rs35, %rs1; + cvt.u32.u16 %r56, %rs35; + and.b32 %r57, %r56, 255; + selp.b32 %r58, %r55, %r57, %p12; + selp.b32 %r59, %r57, %r55, %p12; + add.s32 %r60, %r59, 1; + mul.lo.s32 %r61, %r60, %r59; + shr.u32 %r62, %r61, 1; + add.s32 %r63, %r62, %r58; cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r71, 4; + mul.wide.s32 %rd32, %r63, 4; add.s64 %rd33, %rd31, %rd32; ld.global.f32 %f11, [%rd33]; cvta.to.global.u64 %rd34, %rd9; add.s64 %rd35, %rd34, %rd32; ld.global.f32 %f12, [%rd35]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f100, %f12, 0f3F000000; - div.rn.f32 %f101, %f100, %f11; - mul.f32 %f102, %f101, %f89; - fma.rn.f32 %f208, %f3, %f102, %f1; - mul.f32 %f103, %f1, %f102; - sub.f32 %f210, %f3, %f103; - mov.f32 %f209, %f2; - -BB0_11: - setp.eq.b16 %p14, %rs13, 1; - mul.f32 %f18, %f89, %f89; - add.f32 %f104, %f11, %f11; - div.rn.f32 %f105, %f104, %f18; - sub.f32 %f106, %f208, %f1; - sub.f32 %f107, %f209, %f2; - sub.f32 %f108, %f210, %f3; - fma.rn.f32 %f109, %f106, %f105, 0f00000000; - fma.rn.f32 %f19, %f107, %f105, 0f00000000; - fma.rn.f32 %f110, %f105, %f108, 0f00000000; - div.rn.f32 %f111, %f12, %f89; - mul.f32 %f112, %f210, %f111; - sub.f32 %f20, %f109, %f112; - fma.rn.f32 %f21, %f208, %f111, %f110; - add.s32 %r9, %r1, 1; - @!%p14 bra BB0_13; - bra.uni BB0_12; + setp.ne.s16 %p13, %rs13, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; BB0_12: - rem.s32 %r76, %r9, %r32; - add.s32 %r77, %r76, %r32; - rem.s32 %r231, %r77, %r32; - bra.uni BB0_14; + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; BB0_13: - add.s32 %r78, %r32, -1; - min.s32 %r231, %r9, %r78; + setp.eq.b16 %p17, %rs14, 1; + add.s32 %r10, %r1, 1; + @!%p17 bra BB0_15; + bra.uni BB0_14; BB0_14: - setp.eq.b16 %p15, %rs13, 1; - mad.lo.s32 %r13, %r44, %r32, %r231; - setp.lt.s32 %p16, %r9, %r32; - or.pred %p17, %p16, %p15; - mov.f32 %f214, 0f00000000; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @!%p17 bra BB0_16; - bra.uni BB0_15; + rem.s32 %r68, %r10, %r33; + add.s32 %r69, %r68, %r33; + rem.s32 %r214, %r69, %r33; + bra.uni BB0_16; BB0_15: - mul.wide.s32 %rd37, %r13, 4; + add.s32 %r70, %r33, -1; + min.s32 %r214, %r10, %r70; + +BB0_16: + setp.eq.b16 %p18, %rs14, 1; + add.s32 %r14, %r214, %r4; + setp.lt.s32 %p19, %r10, %r33; + or.pred %p20, %p19, %p18; + mov.f32 %f231, 0f00000000; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @!%p20 bra BB0_18; + bra.uni BB0_17; + +BB0_17: + mul.wide.s32 %rd37, %r14, 4; add.s64 %rd38, %rd14, %rd37; - ld.global.f32 %f214, [%rd38]; + ld.global.f32 %f231, [%rd38]; add.s64 %rd40, %rd13, %rd37; - ld.global.f32 %f215, [%rd40]; + ld.global.f32 %f232, [%rd40]; add.s64 %rd42, %rd12, %rd37; - ld.global.f32 %f216, [%rd42]; + ld.global.f32 %f233, [%rd42]; -BB0_16: - mul.f32 %f116, %f215, %f215; - fma.rn.f32 %f117, %f214, %f214, %f116; - fma.rn.f32 %f28, %f216, %f216, %f117; - setp.eq.f32 %p18, %f28, 0f00000000; - mov.u16 %rs34, %rs1; - @%p18 bra BB0_18; - - cvt.s64.s32 %rd44, %r13; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs36, %rs1; + @%p21 bra BB0_20; + + cvt.s64.s32 %rd44, %r14; add.s64 %rd45, %rd11, %rd44; - ld.global.u8 %rs34, [%rd45]; + ld.global.u8 %rs36, [%rd45]; -BB0_18: - setp.gt.u16 %p19, %rs34, %rs1; - cvt.u32.u16 %r90, %rs34; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r63, %r91, %p19; - selp.b32 %r93, %r91, %r63, %p19; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd47, %r97, 4; +BB0_20: + setp.gt.u16 %p22, %rs36, %rs1; + cvt.u32.u16 %r73, %rs36; + and.b32 %r74, %r73, 255; + selp.b32 %r75, %r55, %r74, %p22; + selp.b32 %r76, %r74, %r55, %p22; + add.s32 %r77, %r76, 1; + mul.lo.s32 %r78, %r77, %r76; + shr.u32 %r79, %r78, 1; + add.s32 %r80, %r79, %r75; + mul.wide.s32 %rd47, %r80, 4; add.s64 %rd48, %rd31, %rd47; - ld.global.f32 %f29, [%rd48]; + ld.global.f32 %f31, [%rd48]; add.s64 %rd50, %rd34, %rd47; - ld.global.f32 %f30, [%rd50]; - setp.neu.f32 %p20, %f28, 0f00000000; - @%p20 bra BB0_20; - - mul.f32 %f118, %f30, 0f3F000000; - div.rn.f32 %f119, %f118, %f29; - mul.f32 %f120, %f119, %f89; - mul.f32 %f121, %f3, %f120; - sub.f32 %f214, %f1, %f121; - fma.rn.f32 %f216, %f1, %f120, %f3; - mov.f32 %f215, %f2; + ld.global.f32 %f32, [%rd50]; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; -BB0_20: - add.f32 %f122, %f29, %f29; - div.rn.f32 %f123, %f122, %f18; - sub.f32 %f124, %f214, %f1; - sub.f32 %f125, %f215, %f2; - sub.f32 %f126, %f216, %f3; - fma.rn.f32 %f127, %f124, %f123, %f20; - fma.rn.f32 %f36, %f125, %f123, %f19; - fma.rn.f32 %f128, %f123, %f126, %f21; - div.rn.f32 %f129, %f30, %f89; - fma.rn.f32 %f37, %f216, %f129, %f127; - mul.f32 %f130, %f214, %f129; - sub.f32 %f38, %f128, %f130; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; + + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs6, %rs12, 2; - setp.eq.s16 %p21, %rs6, 0; - add.s32 %r14, %r2, -1; - @%p21 bra BB0_22; + setp.eq.s16 %p27, %rs6, 0; + add.s32 %r15, %r2, -1; + @%p27 bra BB0_26; - rem.s32 %r102, %r14, %r33; - add.s32 %r103, %r102, %r33; - rem.s32 %r232, %r103, %r33; - bra.uni BB0_23; + rem.s32 %r85, %r15, %r34; + add.s32 %r86, %r85, %r34; + rem.s32 %r215, %r86, %r34; + bra.uni BB0_27; -BB0_22: - mov.u32 %r104, 0; - max.s32 %r232, %r14, %r104; +BB0_26: + mov.u32 %r87, 0; + max.s32 %r215, %r15, %r87; -BB0_23: - mad.lo.s32 %r109, %r3, %r33, %r232; - mad.lo.s32 %r18, %r109, %r32, %r1; - setp.lt.s32 %p23, %r14, 0; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; - - mul.wide.s32 %rd52, %r18, 4; +BB0_27: + mad.lo.s32 %r92, %r3, %r34, %r215; + mad.lo.s32 %r19, %r92, %r33, %r1; + setp.lt.s32 %p29, %r15, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; + + mul.wide.s32 %rd52, %r19, 4; add.s64 %rd53, %rd14, %rd52; - ld.global.f32 %f220, [%rd53]; + ld.global.f32 %f240, [%rd53]; add.s64 %rd55, %rd13, %rd52; - ld.global.f32 %f221, [%rd55]; + ld.global.f32 %f241, [%rd55]; add.s64 %rd57, %rd12, %rd52; - ld.global.f32 %f222, [%rd57]; + ld.global.f32 %f242, [%rd57]; -BB0_25: - mul.f32 %f134, %f221, %f221; - fma.rn.f32 %f135, %f220, %f220, %f134; - fma.rn.f32 %f45, %f222, %f222, %f135; - setp.eq.f32 %p25, %f45, 0f00000000; - mov.u16 %rs35, %rs1; - @%p25 bra BB0_27; - - cvt.s64.s32 %rd59, %r18; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs37, %rs1; + @%p31 bra BB0_31; + + cvt.s64.s32 %rd59, %r19; add.s64 %rd60, %rd11, %rd59; - ld.global.u8 %rs35, [%rd60]; + ld.global.u8 %rs37, [%rd60]; -BB0_27: - setp.gt.u16 %p26, %rs35, %rs1; - cvt.u32.u16 %r116, %rs35; - and.b32 %r117, %r116, 255; - selp.b32 %r118, %r63, %r117, %p26; - selp.b32 %r119, %r117, %r63, %p26; - add.s32 %r120, %r119, 1; - mul.lo.s32 %r121, %r120, %r119; - shr.u32 %r122, %r121, 1; - add.s32 %r123, %r122, %r118; - mul.wide.s32 %rd62, %r123, 4; +BB0_31: + setp.gt.u16 %p32, %rs37, %rs1; + cvt.u32.u16 %r99, %rs37; + and.b32 %r100, %r99, 255; + selp.b32 %r101, %r55, %r100, %p32; + selp.b32 %r102, %r100, %r55, %p32; + add.s32 %r103, %r102, 1; + mul.lo.s32 %r104, %r103, %r102; + shr.u32 %r105, %r104, 1; + add.s32 %r106, %r105, %r101; + mul.wide.s32 %rd62, %r106, 4; add.s64 %rd63, %rd31, %rd62; - ld.global.f32 %f46, [%rd63]; + ld.global.f32 %f51, [%rd63]; add.s64 %rd65, %rd34, %rd62; - ld.global.f32 %f47, [%rd65]; - setp.neu.f32 %p27, %f45, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f136, %f47, 0f3F000000; - div.rn.f32 %f137, %f136, %f46; - mul.f32 %f138, %f137, %f90; - fma.rn.f32 %f221, %f3, %f138, %f2; - mul.f32 %f139, %f2, %f138; - sub.f32 %f222, %f3, %f139; - mov.f32 %f220, %f1; + ld.global.f32 %f52, [%rd65]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f53, %f90, %f90; - add.f32 %f140, %f46, %f46; - div.rn.f32 %f141, %f140, %f53; - sub.f32 %f142, %f220, %f1; - sub.f32 %f143, %f221, %f2; - sub.f32 %f144, %f222, %f3; - fma.rn.f32 %f54, %f142, %f141, %f37; - fma.rn.f32 %f145, %f143, %f141, %f36; - fma.rn.f32 %f146, %f141, %f144, %f38; - div.rn.f32 %f147, %f47, %f90; - mul.f32 %f148, %f222, %f147; - sub.f32 %f55, %f145, %f148; - fma.rn.f32 %f56, %f221, %f147, %f146; - add.s32 %r19, %r2, 1; - @%p21 bra BB0_31; - - rem.s32 %r128, %r19, %r33; - add.s32 %r129, %r128, %r33; - rem.s32 %r233, %r129, %r33; - bra.uni BB0_32; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; -BB0_31: - add.s32 %r130, %r33, -1; - min.s32 %r233, %r19, %r130; - -BB0_32: - mad.lo.s32 %r135, %r3, %r33, %r233; - mad.lo.s32 %r23, %r135, %r32, %r1; - setp.ge.s32 %p29, %r19, %r33; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; - - mul.wide.s32 %rd67, %r23, 4; + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: + add.s32 %r20, %r2, 1; + @%p27 bra BB0_37; + + rem.s32 %r111, %r20, %r34; + add.s32 %r112, %r111, %r34; + rem.s32 %r216, %r112, %r34; + bra.uni BB0_38; + +BB0_37: + add.s32 %r113, %r34, -1; + min.s32 %r216, %r20, %r113; + +BB0_38: + shr.u16 %rs26, %rs12, 1; + and.b16 %rs27, %rs26, 1; + setp.eq.b16 %p38, %rs27, 1; + not.pred %p39, %p38; + mad.lo.s32 %r118, %r3, %r34, %r216; + mad.lo.s32 %r24, %r118, %r33, %r1; + setp.ge.s32 %p40, %r20, %r34; + mov.f32 %f249, 0f00000000; + and.pred %p41, %p40, %p39; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p41 bra BB0_40; + + mul.wide.s32 %rd67, %r24, 4; add.s64 %rd68, %rd14, %rd67; - ld.global.f32 %f226, [%rd68]; + ld.global.f32 %f249, [%rd68]; add.s64 %rd70, %rd13, %rd67; - ld.global.f32 %f227, [%rd70]; + ld.global.f32 %f250, [%rd70]; add.s64 %rd72, %rd12, %rd67; - ld.global.f32 %f228, [%rd72]; + ld.global.f32 %f251, [%rd72]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f63, %f228, %f228, %f153; - setp.eq.f32 %p32, %f63, 0f00000000; - mov.u16 %rs36, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p42, %f70, 0f00000000; + mov.u16 %rs38, %rs1; + @%p42 bra BB0_42; - cvt.s64.s32 %rd74, %r23; + cvt.s64.s32 %rd74, %r24; add.s64 %rd75, %rd11, %rd74; - ld.global.u8 %rs36, [%rd75]; - -BB0_36: - setp.gt.u16 %p33, %rs36, %rs1; - cvt.u32.u16 %r142, %rs36; - and.b32 %r143, %r142, 255; - selp.b32 %r144, %r63, %r143, %p33; - selp.b32 %r145, %r143, %r63, %p33; - add.s32 %r146, %r145, 1; - mul.lo.s32 %r147, %r146, %r145; - shr.u32 %r148, %r147, 1; - add.s32 %r149, %r148, %r144; - mul.wide.s32 %rd77, %r149, 4; + ld.global.u8 %rs38, [%rd75]; + +BB0_42: + setp.gt.u16 %p43, %rs38, %rs1; + cvt.u32.u16 %r125, %rs38; + and.b32 %r126, %r125, 255; + selp.b32 %r127, %r55, %r126, %p43; + selp.b32 %r128, %r126, %r55, %p43; + add.s32 %r129, %r128, 1; + mul.lo.s32 %r130, %r129, %r128; + shr.u32 %r131, %r130, 1; + add.s32 %r132, %r131, %r127; + mul.wide.s32 %rd77, %r132, 4; add.s64 %rd78, %rd31, %rd77; - ld.global.f32 %f64, [%rd78]; + ld.global.f32 %f71, [%rd78]; add.s64 %rd80, %rd34, %rd77; - ld.global.f32 %f65, [%rd80]; - setp.neu.f32 %p34, %f63, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f65, 0f3F000000; - div.rn.f32 %f155, %f154, %f64; - mul.f32 %f156, %f155, %f90; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.f32 %f72, [%rd80]; + and.pred %p46, %p42, %p13; + @%p46 bra BB0_46; -BB0_38: - add.f32 %f158, %f64, %f64; - div.rn.f32 %f159, %f158, %f53; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f54; - fma.rn.f32 %f163, %f161, %f159, %f55; - fma.rn.f32 %f164, %f159, %f162, %f56; - div.rn.f32 %f165, %f65, %f90; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r34, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p47, %f70, 0f00000000; + @%p47 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p48, %r35, 1; + @%p48 bra BB0_54; and.b16 %rs11, %rs12, 4; - setp.eq.s16 %p36, %rs11, 0; - add.s32 %r24, %r3, -1; - @%p36 bra BB0_41; + setp.eq.s16 %p49, %rs11, 0; + add.s32 %r25, %r3, -1; + @%p49 bra BB0_49; - rem.s32 %r154, %r24, %r34; - add.s32 %r155, %r154, %r34; - rem.s32 %r234, %r155, %r34; - bra.uni BB0_42; + rem.s32 %r137, %r25, %r35; + add.s32 %r138, %r137, %r35; + rem.s32 %r217, %r138, %r35; + bra.uni BB0_50; -BB0_41: - mov.u32 %r156, 0; - max.s32 %r234, %r24, %r156; +BB0_49: + mov.u32 %r139, 0; + max.s32 %r217, %r25, %r139; -BB0_42: - mad.lo.s32 %r161, %r234, %r33, %r2; - mad.lo.s32 %r166, %r161, %r32, %r1; - cvt.s64.s32 %rd82, %r166; - mul.wide.s32 %rd83, %r166, 4; +BB0_50: + mad.lo.s32 %r144, %r217, %r34, %r2; + mad.lo.s32 %r149, %r144, %r33, %r1; + cvt.s64.s32 %rd82, %r149; + mul.wide.s32 %rd83, %r149, 4; add.s64 %rd84, %rd14, %rd83; add.s64 %rd86, %rd13, %rd83; add.s64 %rd88, %rd12, %rd83; - ld.global.f32 %f167, [%rd84]; - ld.global.f32 %f168, [%rd86]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.f32 %f171, [%rd88]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.f32 %f184, [%rd84]; + ld.global.f32 %f185, [%rd86]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.f32 %f188, [%rd88]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p50, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p50; + selp.f32 %f191, %f2, %f185, %p50; + selp.f32 %f192, %f3, %f188, %p50; add.s64 %rd90, %rd11, %rd82; - ld.global.u8 %rs28, [%rd90]; - setp.gt.u16 %p38, %rs28, %rs1; - cvt.u32.u16 %r167, %rs28; - selp.b32 %r170, %r63, %r167, %p38; - selp.b32 %r171, %r167, %r63, %p38; - add.s32 %r172, %r171, 1; - mul.lo.s32 %r173, %r172, %r171; - shr.u32 %r174, %r173, 1; - add.s32 %r175, %r174, %r170; - mul.wide.s32 %rd92, %r175, 4; + ld.global.u8 %rs30, [%rd90]; + setp.gt.u16 %p51, %rs30, %rs1; + cvt.u32.u16 %r150, %rs30; + selp.b32 %r153, %r55, %r150, %p51; + selp.b32 %r154, %r150, %r55, %p51; + add.s32 %r155, %r154, 1; + mul.lo.s32 %r156, %r155, %r154; + shr.u32 %r157, %r156, 1; + add.s32 %r158, %r157, %r153; + mul.wide.s32 %rd92, %r158, 4; add.s64 %rd93, %rd31, %rd92; - ld.global.f32 %f176, [%rd93]; - add.f32 %f177, %f176, %f176; - mul.f32 %f74, %f91, %f91; - div.rn.f32 %f178, %f177, %f74; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f75, %f178, %f179, %f229; - fma.rn.f32 %f76, %f178, %f180, %f230; - fma.rn.f32 %f77, %f178, %f181, %f231; - add.s32 %r28, %r3, 1; - @%p36 bra BB0_44; - - rem.s32 %r180, %r28, %r34; - add.s32 %r181, %r180, %r34; - rem.s32 %r235, %r181, %r34; - bra.uni BB0_45; - -BB0_44: - add.s32 %r182, %r34, -1; - min.s32 %r235, %r28, %r182; - -BB0_45: - mad.lo.s32 %r187, %r235, %r33, %r2; - mad.lo.s32 %r192, %r187, %r32, %r1; - cvt.s64.s32 %rd95, %r192; - mul.wide.s32 %rd96, %r192, 4; + ld.global.f32 %f193, [%rd93]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; + add.s32 %r29, %r3, 1; + @%p49 bra BB0_52; + + rem.s32 %r163, %r29, %r35; + add.s32 %r164, %r163, %r35; + rem.s32 %r218, %r164, %r35; + bra.uni BB0_53; + +BB0_52: + add.s32 %r165, %r35, -1; + min.s32 %r218, %r29, %r165; + +BB0_53: + mad.lo.s32 %r170, %r218, %r34, %r2; + mad.lo.s32 %r175, %r170, %r33, %r1; + cvt.s64.s32 %rd95, %r175; + mul.wide.s32 %rd96, %r175, 4; add.s64 %rd97, %rd14, %rd96; add.s64 %rd99, %rd13, %rd96; add.s64 %rd101, %rd12, %rd96; - ld.global.f32 %f182, [%rd97]; - ld.global.f32 %f183, [%rd99]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.f32 %f186, [%rd101]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.f32 %f199, [%rd97]; + ld.global.f32 %f200, [%rd99]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.f32 %f203, [%rd101]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p53, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p53; + selp.f32 %f206, %f2, %f200, %p53; + selp.f32 %f207, %f1, %f199, %p53; add.s64 %rd103, %rd11, %rd95; - ld.global.u8 %rs31, [%rd103]; - setp.gt.u16 %p41, %rs31, %rs1; - cvt.u32.u16 %r193, %rs31; - selp.b32 %r196, %r63, %r193, %p41; - selp.b32 %r197, %r193, %r63, %p41; - add.s32 %r198, %r197, 1; - mul.lo.s32 %r199, %r198, %r197; - shr.u32 %r200, %r199, 1; - add.s32 %r201, %r200, %r196; - mul.wide.s32 %rd105, %r201, 4; + ld.global.u8 %rs33, [%rd103]; + setp.gt.u16 %p54, %rs33, %rs1; + cvt.u32.u16 %r176, %rs33; + selp.b32 %r179, %r55, %r176, %p54; + selp.b32 %r180, %r176, %r55, %p54; + add.s32 %r181, %r180, 1; + mul.lo.s32 %r182, %r181, %r180; + shr.u32 %r183, %r182, 1; + add.s32 %r184, %r183, %r179; + mul.wide.s32 %rd105, %r184, 4; add.s64 %rd106, %rd31, %rd105; - ld.global.f32 %f191, [%rd106]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f74; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f75; - fma.rn.f32 %f230, %f193, %f195, %f76; - fma.rn.f32 %f231, %f193, %f196, %f77; - -BB0_46: - setp.eq.s64 %p42, %rd7, 0; - @%p42 bra BB0_48; - + ld.global.f32 %f208, [%rd106]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p55, %rd7, 0; + @%p55 bra BB0_56; + + mad.lo.s32 %r198, %r45, %r33, %r1; cvta.to.global.u64 %rd107, %rd7; - add.s64 %rd109, %rd107, %rd15; - ld.global.f32 %f197, [%rd109]; - mul.f32 %f232, %f197, %f232; + mul.wide.s32 %rd108, %r198, 4; + add.s64 %rd109, %rd107, %rd108; + ld.global.f32 %f214, [%rd109]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p56, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p56 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: + mad.lo.s32 %r212, %r45, %r33, %r1; cvta.to.global.u64 %rd110, %rd1; - add.s64 %rd112, %rd110, %rd15; - ld.global.f32 %f199, [%rd112]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd112], %f200; + mul.wide.s32 %rd111, %r212, 4; + add.s64 %rd112, %rd110, %rd111; + ld.global.f32 %f216, [%rd112]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd112], %f217; cvta.to.global.u64 %rd113, %rd2; - add.s64 %rd114, %rd113, %rd15; - ld.global.f32 %f201, [%rd114]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd114], %f202; + add.s64 %rd114, %rd113, %rd111; + ld.global.f32 %f218, [%rd114]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd114], %f219; cvta.to.global.u64 %rd115, %rd3; - add.s64 %rd116, %rd115, %rd15; - ld.global.f32 %f203, [%rd116]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd116], %f204; + add.s64 %rd116, %rd115, %rd111; + ld.global.f32 %f220, [%rd116]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd116], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_35.ptx b/cuda/dmi_35.ptx index 2c21091f0..95afc9f72 100644 --- a/cuda/dmi_35.ptx +++ b/cuda/dmi_35.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_35 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_37.ptx b/cuda/dmi_37.ptx index 6ab19ca54..9c4261207 100644 --- a/cuda/dmi_37.ptx +++ b/cuda/dmi_37.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_37 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_50.ptx b/cuda/dmi_50.ptx index 754d93598..6e5eaadbe 100644 --- a/cuda/dmi_50.ptx +++ b/cuda/dmi_50.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_50 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_52.ptx b/cuda/dmi_52.ptx index cf463d69b..f1fdb5bdd 100644 --- a/cuda/dmi_52.ptx +++ b/cuda/dmi_52.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_52 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_53.ptx b/cuda/dmi_53.ptx index 7cfb79b02..bf15e3f98 100644 --- a/cuda/dmi_53.ptx +++ b/cuda/dmi_53.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_53 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_60.ptx b/cuda/dmi_60.ptx index bda457205..9fe230c29 100644 --- a/cuda/dmi_60.ptx +++ b/cuda/dmi_60.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_60 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_61.ptx b/cuda/dmi_61.ptx index ef2ab5464..269bda50c 100644 --- a/cuda/dmi_61.ptx +++ b/cuda/dmi_61.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_61 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_62.ptx b/cuda/dmi_62.ptx deleted file mode 100644 index f42aba7ad..000000000 --- a/cuda/dmi_62.ptx +++ /dev/null @@ -1,746 +0,0 @@ -// -// Generated by NVIDIA NVVM Compiler -// -// Compiler Build ID: CL-20732876 -// Cuda compilation tools, release 8.0, V8.0.26 -// Based on LLVM 3.4svn -// - -.version 5.0 -.target sm_62 -.address_size 64 - - // .globl adddmi - -.visible .entry adddmi( - .param .u64 adddmi_param_0, - .param .u64 adddmi_param_1, - .param .u64 adddmi_param_2, - .param .u64 adddmi_param_3, - .param .u64 adddmi_param_4, - .param .u64 adddmi_param_5, - .param .u64 adddmi_param_6, - .param .f32 adddmi_param_7, - .param .u64 adddmi_param_8, - .param .u64 adddmi_param_9, - .param .u64 adddmi_param_10, - .param .f32 adddmi_param_11, - .param .f32 adddmi_param_12, - .param .f32 adddmi_param_13, - .param .u32 adddmi_param_14, - .param .u32 adddmi_param_15, - .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 -) -{ - .reg .pred %p<48>; - .reg .b16 %rs<50>; - .reg .f32 %f<232>; - .reg .b32 %r<300>; - .reg .b64 %rd<121>; - - - ld.param.u64 %rd1, [adddmi_param_0]; - ld.param.u64 %rd2, [adddmi_param_1]; - ld.param.u64 %rd3, [adddmi_param_2]; - ld.param.u64 %rd4, [adddmi_param_3]; - ld.param.u64 %rd5, [adddmi_param_4]; - ld.param.u64 %rd6, [adddmi_param_5]; - ld.param.u64 %rd7, [adddmi_param_6]; - ld.param.f32 %f230, [adddmi_param_7]; - ld.param.u64 %rd8, [adddmi_param_8]; - ld.param.u64 %rd9, [adddmi_param_9]; - ld.param.u64 %rd10, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; - ld.param.u32 %r69, [adddmi_param_14]; - ld.param.u32 %r70, [adddmi_param_15]; - ld.param.u32 %r71, [adddmi_param_16]; - ld.param.u8 %rs12, [adddmi_param_17]; - mov.u32 %r72, %ntid.x; - mov.u32 %r73, %ctaid.x; - mov.u32 %r74, %tid.x; - mad.lo.s32 %r1, %r72, %r73, %r74; - mov.u32 %r75, %ntid.y; - mov.u32 %r76, %ctaid.y; - mov.u32 %r77, %tid.y; - mad.lo.s32 %r2, %r75, %r76, %r77; - mov.u32 %r78, %ntid.z; - mov.u32 %r79, %ctaid.z; - mov.u32 %r80, %tid.z; - mad.lo.s32 %r3, %r78, %r79, %r80; - setp.ge.s32 %p1, %r1, %r69; - setp.ge.s32 %p2, %r2, %r70; - or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r71; - or.pred %p5, %p3, %p4; - @%p5 bra BB0_81; - - cvta.to.global.u64 %rd11, %rd10; - cvta.to.global.u64 %rd12, %rd6; - cvta.to.global.u64 %rd13, %rd5; - cvta.to.global.u64 %rd14, %rd4; - mad.lo.s32 %r81, %r3, %r70, %r2; - mad.lo.s32 %r82, %r81, %r69, %r1; - cvt.s64.s32 %rd15, %r82; - mul.wide.s32 %rd16, %r82, 4; - add.s64 %rd17, %rd14, %rd16; - add.s64 %rd18, %rd13, %rd16; - add.s64 %rd19, %rd12, %rd16; - add.s64 %rd20, %rd11, %rd15; - ld.global.nc.u8 %rs1, [%rd20]; - cvt.u32.u16 %r83, %rs1; - and.b32 %r4, %r83, 255; - ld.global.nc.f32 %f1, [%rd17]; - ld.global.nc.f32 %f2, [%rd18]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; - ld.global.nc.f32 %f3, [%rd19]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_81; - - and.b16 %rs13, %rs12, 1; - setp.eq.b16 %p7, %rs13, 1; - add.s32 %r5, %r1, -1; - @!%p7 bra BB0_4; - bra.uni BB0_3; - -BB0_3: - rem.s32 %r88, %r5, %r69; - add.s32 %r89, %r88, %r69; - rem.s32 %r284, %r89, %r69; - bra.uni BB0_5; - -BB0_4: - mov.u32 %r90, 0; - max.s32 %r284, %r5, %r90; - -BB0_5: - mad.lo.s32 %r9, %r81, %r69, %r284; - setp.gt.s32 %p8, %r1, 0; - setp.eq.b16 %p9, %rs13, 1; - or.pred %p10, %p8, %p9; - mov.f32 %f206, 0f00000000; - mov.f32 %f213, %f206; - mov.f32 %f205, %f206; - @!%p10 bra BB0_7; - bra.uni BB0_6; - -BB0_6: - mul.wide.s32 %rd22, %r9, 4; - add.s64 %rd23, %rd14, %rd22; - ld.global.nc.f32 %f205, [%rd23]; - add.s64 %rd25, %rd13, %rd22; - ld.global.nc.f32 %f213, [%rd25]; - add.s64 %rd27, %rd12, %rd22; - ld.global.nc.f32 %f206, [%rd27]; - -BB0_7: - mov.f32 %f8, %f213; - mul.f32 %f104, %f8, %f8; - fma.rn.f32 %f105, %f205, %f205, %f104; - fma.rn.f32 %f10, %f206, %f206, %f105; - setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs49, %rs1; - @%p11 bra BB0_9; - - cvt.s64.s32 %rd28, %r9; - add.s64 %rd30, %rd11, %rd28; - ld.global.nc.u8 %rs2, [%rd30]; - mov.u16 %rs49, %rs2; - -BB0_9: - mov.u16 %rs3, %rs49; - cvt.u32.u16 %r104, %rs3; - and.b32 %r10, %r104, 255; - setp.gt.u16 %p12, %rs3, %rs1; - @%p12 bra BB0_11; - bra.uni BB0_10; - -BB0_11: - add.s32 %r108, %r10, 1; - mul.lo.s32 %r109, %r108, %r10; - shr.u32 %r110, %r109, 1; - add.s32 %r285, %r110, %r4; - bra.uni BB0_12; - -BB0_10: - add.s32 %r105, %r4, 1; - mul.lo.s32 %r106, %r105, %r4; - shr.u32 %r107, %r106, 1; - add.s32 %r285, %r10, %r107; - -BB0_12: - cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r285, 4; - add.s64 %rd33, %rd31, %rd32; - ld.global.nc.f32 %f11, [%rd33]; - @%p12 bra BB0_14; - bra.uni BB0_13; - -BB0_14: - add.s32 %r114, %r10, 1; - mul.lo.s32 %r115, %r114, %r10; - shr.u32 %r116, %r115, 1; - add.s32 %r286, %r116, %r4; - bra.uni BB0_15; - -BB0_13: - add.s32 %r111, %r4, 1; - mul.lo.s32 %r112, %r111, %r4; - shr.u32 %r113, %r112, 1; - add.s32 %r286, %r10, %r113; - -BB0_15: - cvta.to.global.u64 %rd34, %rd9; - mul.wide.s32 %rd35, %r286, 4; - add.s64 %rd36, %rd34, %rd35; - ld.global.nc.f32 %f12, [%rd36]; - setp.neu.f32 %p14, %f10, 0f00000000; - mov.f32 %f212, %f8; - @%p14 bra BB0_17; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f205, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f206, %f3, %f109; - mov.f32 %f212, %f2; - -BB0_17: - mov.f32 %f16, %f212; - setp.eq.b16 %p15, %rs13, 1; - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f205, %f1; - sub.f32 %f113, %f16, %f2; - sub.f32 %f114, %f206, %f3; - fma.rn.f32 %f115, %f112, %f111, 0f00000000; - fma.rn.f32 %f19, %f113, %f111, 0f00000000; - fma.rn.f32 %f116, %f111, %f114, 0f00000000; - div.rn.f32 %f117, %f12, %f95; - mul.f32 %f118, %f206, %f117; - sub.f32 %f20, %f115, %f118; - fma.rn.f32 %f21, %f205, %f117, %f116; - add.s32 %r17, %r1, 1; - @!%p15 bra BB0_19; - bra.uni BB0_18; - -BB0_18: - rem.s32 %r121, %r17, %r69; - add.s32 %r122, %r121, %r69; - rem.s32 %r287, %r122, %r69; - bra.uni BB0_20; - -BB0_19: - add.s32 %r123, %r69, -1; - min.s32 %r287, %r17, %r123; - -BB0_20: - setp.eq.b16 %p16, %rs13, 1; - mad.lo.s32 %r21, %r81, %r69, %r287; - setp.lt.s32 %p17, %r17, %r69; - or.pred %p18, %p17, %p16; - mov.f32 %f215, 0f00000000; - mov.f32 %f214, %f215; - mov.f32 %f207, %f215; - @!%p18 bra BB0_22; - bra.uni BB0_21; - -BB0_21: - mul.wide.s32 %rd38, %r21, 4; - add.s64 %rd39, %rd14, %rd38; - ld.global.nc.f32 %f207, [%rd39]; - add.s64 %rd41, %rd13, %rd38; - ld.global.nc.f32 %f214, [%rd41]; - add.s64 %rd43, %rd12, %rd38; - ld.global.nc.f32 %f215, [%rd43]; - -BB0_22: - mov.f32 %f211, %f214; - mul.f32 %f122, %f211, %f211; - fma.rn.f32 %f123, %f207, %f207, %f122; - fma.rn.f32 %f28, %f215, %f215, %f123; - setp.eq.f32 %p19, %f28, 0f00000000; - mov.u16 %rs48, %rs1; - @%p19 bra BB0_24; - - cvt.s64.s32 %rd44, %r21; - add.s64 %rd46, %rd11, %rd44; - ld.global.nc.u8 %rs48, [%rd46]; - -BB0_24: - cvt.u32.u16 %r133, %rs48; - and.b32 %r22, %r133, 255; - setp.gt.u16 %p20, %rs48, %rs1; - @%p20 bra BB0_26; - bra.uni BB0_25; - -BB0_26: - add.s32 %r137, %r22, 1; - mul.lo.s32 %r138, %r137, %r22; - shr.u32 %r139, %r138, 1; - add.s32 %r288, %r139, %r4; - bra.uni BB0_27; - -BB0_25: - add.s32 %r134, %r4, 1; - mul.lo.s32 %r135, %r134, %r4; - shr.u32 %r136, %r135, 1; - add.s32 %r288, %r22, %r136; - -BB0_27: - mul.wide.s32 %rd48, %r288, 4; - add.s64 %rd49, %rd31, %rd48; - ld.global.nc.f32 %f29, [%rd49]; - @%p20 bra BB0_29; - bra.uni BB0_28; - -BB0_29: - add.s32 %r143, %r22, 1; - mul.lo.s32 %r144, %r143, %r22; - shr.u32 %r145, %r144, 1; - add.s32 %r289, %r145, %r4; - bra.uni BB0_30; - -BB0_28: - add.s32 %r140, %r4, 1; - mul.lo.s32 %r141, %r140, %r4; - shr.u32 %r142, %r141, 1; - add.s32 %r289, %r22, %r142; - -BB0_30: - mul.wide.s32 %rd51, %r289, 4; - add.s64 %rd52, %rd34, %rd51; - ld.global.nc.f32 %f30, [%rd52]; - setp.neu.f32 %p22, %f28, 0f00000000; - @%p22 bra BB0_32; - - mul.f32 %f124, %f30, 0f3F000000; - div.rn.f32 %f125, %f124, %f29; - mul.f32 %f126, %f125, %f95; - mul.f32 %f127, %f3, %f126; - sub.f32 %f207, %f1, %f127; - fma.rn.f32 %f215, %f1, %f126, %f3; - mov.f32 %f211, %f2; - -BB0_32: - add.f32 %f128, %f29, %f29; - div.rn.f32 %f129, %f128, %f18; - sub.f32 %f130, %f207, %f1; - sub.f32 %f131, %f211, %f2; - sub.f32 %f132, %f215, %f3; - fma.rn.f32 %f133, %f130, %f129, %f20; - fma.rn.f32 %f36, %f131, %f129, %f19; - fma.rn.f32 %f134, %f129, %f132, %f21; - div.rn.f32 %f135, %f30, %f95; - fma.rn.f32 %f37, %f215, %f135, %f133; - mul.f32 %f136, %f207, %f135; - sub.f32 %f38, %f134, %f136; - and.b16 %rs6, %rs12, 2; - setp.eq.s16 %p23, %rs6, 0; - add.s32 %r29, %r2, -1; - @%p23 bra BB0_34; - - rem.s32 %r150, %r29, %r70; - add.s32 %r151, %r150, %r70; - rem.s32 %r290, %r151, %r70; - bra.uni BB0_35; - -BB0_34: - mov.u32 %r152, 0; - max.s32 %r290, %r29, %r152; - -BB0_35: - mad.lo.s32 %r157, %r3, %r70, %r290; - mad.lo.s32 %r33, %r157, %r69, %r1; - setp.gt.s32 %p24, %r2, 0; - setp.ne.s16 %p25, %rs6, 0; - or.pred %p26, %p24, %p25; - mov.f32 %f217, 0f00000000; - mov.f32 %f216, %f217; - mov.f32 %f223, %f217; - @!%p26 bra BB0_37; - bra.uni BB0_36; - -BB0_36: - mul.wide.s32 %rd54, %r33, 4; - add.s64 %rd55, %rd14, %rd54; - ld.global.nc.f32 %f223, [%rd55]; - add.s64 %rd57, %rd13, %rd54; - ld.global.nc.f32 %f216, [%rd57]; - add.s64 %rd59, %rd12, %rd54; - ld.global.nc.f32 %f217, [%rd59]; - -BB0_37: - mov.f32 %f42, %f223; - mul.f32 %f140, %f216, %f216; - fma.rn.f32 %f141, %f42, %f42, %f140; - fma.rn.f32 %f45, %f217, %f217, %f141; - setp.eq.f32 %p27, %f45, 0f00000000; - mov.u16 %rs47, %rs1; - @%p27 bra BB0_39; - - cvt.s64.s32 %rd60, %r33; - add.s64 %rd62, %rd11, %rd60; - ld.global.nc.u8 %rs47, [%rd62]; - -BB0_39: - cvt.u32.u16 %r166, %rs47; - and.b32 %r34, %r166, 255; - setp.gt.u16 %p28, %rs47, %rs1; - @%p28 bra BB0_41; - bra.uni BB0_40; - -BB0_41: - add.s32 %r170, %r34, 1; - mul.lo.s32 %r171, %r170, %r34; - shr.u32 %r172, %r171, 1; - add.s32 %r291, %r172, %r4; - bra.uni BB0_42; - -BB0_40: - add.s32 %r167, %r4, 1; - mul.lo.s32 %r168, %r167, %r4; - shr.u32 %r169, %r168, 1; - add.s32 %r291, %r34, %r169; - -BB0_42: - mul.wide.s32 %rd64, %r291, 4; - add.s64 %rd65, %rd31, %rd64; - ld.global.nc.f32 %f46, [%rd65]; - @%p28 bra BB0_44; - bra.uni BB0_43; - -BB0_44: - add.s32 %r176, %r34, 1; - mul.lo.s32 %r177, %r176, %r34; - shr.u32 %r178, %r177, 1; - add.s32 %r292, %r178, %r4; - bra.uni BB0_45; - -BB0_43: - add.s32 %r173, %r4, 1; - mul.lo.s32 %r174, %r173, %r4; - shr.u32 %r175, %r174, 1; - add.s32 %r292, %r34, %r175; - -BB0_45: - mul.wide.s32 %rd67, %r292, 4; - add.s64 %rd68, %rd34, %rd67; - ld.global.nc.f32 %f47, [%rd68]; - setp.neu.f32 %p30, %f45, 0f00000000; - mov.f32 %f222, %f42; - @%p30 bra BB0_47; - - mul.f32 %f142, %f47, 0f3F000000; - div.rn.f32 %f143, %f142, %f46; - mul.f32 %f144, %f143, %f96; - fma.rn.f32 %f216, %f3, %f144, %f2; - mul.f32 %f145, %f2, %f144; - sub.f32 %f217, %f3, %f145; - mov.f32 %f222, %f1; - -BB0_47: - mov.f32 %f50, %f222; - mul.f32 %f53, %f96, %f96; - add.f32 %f146, %f46, %f46; - div.rn.f32 %f147, %f146, %f53; - sub.f32 %f148, %f50, %f1; - sub.f32 %f149, %f216, %f2; - sub.f32 %f150, %f217, %f3; - fma.rn.f32 %f54, %f148, %f147, %f37; - fma.rn.f32 %f151, %f149, %f147, %f36; - fma.rn.f32 %f152, %f147, %f150, %f38; - div.rn.f32 %f153, %f47, %f96; - mul.f32 %f154, %f217, %f153; - sub.f32 %f55, %f151, %f154; - fma.rn.f32 %f56, %f216, %f153, %f152; - add.s32 %r41, %r2, 1; - @%p23 bra BB0_49; - - rem.s32 %r183, %r41, %r70; - add.s32 %r184, %r183, %r70; - rem.s32 %r293, %r184, %r70; - bra.uni BB0_50; - -BB0_49: - add.s32 %r185, %r70, -1; - min.s32 %r293, %r41, %r185; - -BB0_50: - mad.lo.s32 %r190, %r3, %r70, %r293; - mad.lo.s32 %r45, %r190, %r69, %r1; - setp.lt.s32 %p32, %r41, %r70; - or.pred %p34, %p32, %p25; - mov.f32 %f226, 0f00000000; - mov.f32 %f225, %f226; - mov.f32 %f224, %f226; - @!%p34 bra BB0_52; - bra.uni BB0_51; - -BB0_51: - mul.wide.s32 %rd70, %r45, 4; - add.s64 %rd71, %rd14, %rd70; - ld.global.nc.f32 %f224, [%rd71]; - add.s64 %rd73, %rd13, %rd70; - ld.global.nc.f32 %f225, [%rd73]; - add.s64 %rd75, %rd12, %rd70; - ld.global.nc.f32 %f226, [%rd75]; - -BB0_52: - mov.f32 %f221, %f224; - mul.f32 %f158, %f225, %f225; - fma.rn.f32 %f159, %f221, %f221, %f158; - fma.rn.f32 %f63, %f226, %f226, %f159; - setp.eq.f32 %p35, %f63, 0f00000000; - mov.u16 %rs46, %rs1; - @%p35 bra BB0_54; - - cvt.s64.s32 %rd76, %r45; - add.s64 %rd78, %rd11, %rd76; - ld.global.nc.u8 %rs46, [%rd78]; - -BB0_54: - cvt.u32.u16 %r195, %rs46; - and.b32 %r46, %r195, 255; - setp.gt.u16 %p36, %rs46, %rs1; - @%p36 bra BB0_56; - bra.uni BB0_55; - -BB0_56: - add.s32 %r199, %r46, 1; - mul.lo.s32 %r200, %r199, %r46; - shr.u32 %r201, %r200, 1; - add.s32 %r294, %r201, %r4; - bra.uni BB0_57; - -BB0_55: - add.s32 %r196, %r4, 1; - mul.lo.s32 %r197, %r196, %r4; - shr.u32 %r198, %r197, 1; - add.s32 %r294, %r46, %r198; - -BB0_57: - mul.wide.s32 %rd80, %r294, 4; - add.s64 %rd81, %rd31, %rd80; - ld.global.nc.f32 %f64, [%rd81]; - @%p36 bra BB0_59; - bra.uni BB0_58; - -BB0_59: - add.s32 %r205, %r46, 1; - mul.lo.s32 %r206, %r205, %r46; - shr.u32 %r207, %r206, 1; - add.s32 %r295, %r207, %r4; - bra.uni BB0_60; - -BB0_58: - add.s32 %r202, %r4, 1; - mul.lo.s32 %r203, %r202, %r4; - shr.u32 %r204, %r203, 1; - add.s32 %r295, %r46, %r204; - -BB0_60: - mul.wide.s32 %rd83, %r295, 4; - add.s64 %rd84, %rd34, %rd83; - ld.global.nc.f32 %f65, [%rd84]; - setp.neu.f32 %p38, %f63, 0f00000000; - @%p38 bra BB0_62; - - mul.f32 %f160, %f65, 0f3F000000; - div.rn.f32 %f161, %f160, %f64; - mul.f32 %f162, %f161, %f96; - mul.f32 %f163, %f3, %f162; - sub.f32 %f225, %f2, %f163; - fma.rn.f32 %f226, %f2, %f162, %f3; - mov.f32 %f221, %f1; - -BB0_62: - add.f32 %f164, %f64, %f64; - div.rn.f32 %f165, %f164, %f53; - sub.f32 %f166, %f221, %f1; - sub.f32 %f167, %f225, %f2; - sub.f32 %f168, %f226, %f3; - fma.rn.f32 %f227, %f166, %f165, %f54; - fma.rn.f32 %f169, %f167, %f165, %f55; - fma.rn.f32 %f170, %f165, %f168, %f56; - div.rn.f32 %f171, %f65, %f96; - fma.rn.f32 %f228, %f226, %f171, %f169; - mul.f32 %f172, %f225, %f171; - sub.f32 %f229, %f170, %f172; - setp.eq.s32 %p39, %r71, 1; - @%p39 bra BB0_76; - - and.b16 %rs11, %rs12, 4; - setp.eq.s16 %p40, %rs11, 0; - add.s32 %r53, %r3, -1; - @%p40 bra BB0_65; - - rem.s32 %r212, %r53, %r71; - add.s32 %r213, %r212, %r71; - rem.s32 %r296, %r213, %r71; - bra.uni BB0_66; - -BB0_65: - mov.u32 %r214, 0; - max.s32 %r296, %r53, %r214; - -BB0_66: - mad.lo.s32 %r219, %r296, %r70, %r2; - mad.lo.s32 %r224, %r219, %r69, %r1; - cvt.s64.s32 %rd85, %r224; - mul.wide.s32 %rd87, %r224, 4; - add.s64 %rd88, %rd14, %rd87; - add.s64 %rd90, %rd13, %rd87; - add.s64 %rd92, %rd12, %rd87; - ld.global.nc.f32 %f173, [%rd88]; - ld.global.nc.f32 %f174, [%rd90]; - mul.f32 %f175, %f174, %f174; - fma.rn.f32 %f176, %f173, %f173, %f175; - ld.global.nc.f32 %f177, [%rd92]; - fma.rn.f32 %f178, %f177, %f177, %f176; - setp.eq.f32 %p41, %f178, 0f00000000; - selp.f32 %f74, %f1, %f173, %p41; - selp.f32 %f75, %f2, %f174, %p41; - selp.f32 %f76, %f3, %f177, %p41; - add.s64 %rd94, %rd11, %rd85; - ld.global.nc.u8 %rs36, [%rd94]; - setp.gt.u16 %p42, %rs36, %rs1; - cvt.u32.u16 %r225, %rs36; - and.b32 %r57, %r225, 255; - @%p42 bra BB0_68; - bra.uni BB0_67; - -BB0_68: - add.s32 %r229, %r57, 1; - mul.lo.s32 %r230, %r229, %r57; - shr.u32 %r231, %r230, 1; - add.s32 %r297, %r231, %r4; - bra.uni BB0_69; - -BB0_67: - add.s32 %r226, %r4, 1; - mul.lo.s32 %r227, %r226, %r4; - shr.u32 %r228, %r227, 1; - add.s32 %r297, %r57, %r228; - -BB0_69: - mul.wide.s32 %rd96, %r297, 4; - add.s64 %rd97, %rd31, %rd96; - ld.global.nc.f32 %f179, [%rd97]; - add.f32 %f180, %f179, %f179; - mul.f32 %f77, %f97, %f97; - div.rn.f32 %f181, %f180, %f77; - sub.f32 %f182, %f74, %f1; - sub.f32 %f183, %f75, %f2; - sub.f32 %f184, %f76, %f3; - fma.rn.f32 %f78, %f182, %f181, %f227; - fma.rn.f32 %f79, %f183, %f181, %f228; - fma.rn.f32 %f80, %f184, %f181, %f229; - add.s32 %r61, %r3, 1; - @%p40 bra BB0_71; - - rem.s32 %r236, %r61, %r71; - add.s32 %r237, %r236, %r71; - rem.s32 %r298, %r237, %r71; - bra.uni BB0_72; - -BB0_71: - add.s32 %r238, %r71, -1; - min.s32 %r298, %r61, %r238; - -BB0_72: - mad.lo.s32 %r243, %r298, %r70, %r2; - mad.lo.s32 %r248, %r243, %r69, %r1; - cvt.s64.s32 %rd98, %r248; - mul.wide.s32 %rd100, %r248, 4; - add.s64 %rd101, %rd14, %rd100; - add.s64 %rd103, %rd13, %rd100; - add.s64 %rd105, %rd12, %rd100; - ld.global.nc.f32 %f185, [%rd101]; - ld.global.nc.f32 %f186, [%rd103]; - mul.f32 %f187, %f186, %f186; - fma.rn.f32 %f188, %f185, %f185, %f187; - ld.global.nc.f32 %f189, [%rd105]; - fma.rn.f32 %f190, %f189, %f189, %f188; - setp.eq.f32 %p44, %f190, 0f00000000; - selp.f32 %f81, %f3, %f189, %p44; - selp.f32 %f82, %f2, %f186, %p44; - selp.f32 %f83, %f1, %f185, %p44; - add.s64 %rd107, %rd11, %rd98; - ld.global.nc.u8 %rs40, [%rd107]; - setp.gt.u16 %p45, %rs40, %rs1; - cvt.u32.u16 %r249, %rs40; - and.b32 %r65, %r249, 255; - @%p45 bra BB0_74; - bra.uni BB0_73; - -BB0_74: - add.s32 %r253, %r65, 1; - mul.lo.s32 %r254, %r253, %r65; - shr.u32 %r255, %r254, 1; - add.s32 %r299, %r255, %r4; - bra.uni BB0_75; - -BB0_73: - add.s32 %r250, %r4, 1; - mul.lo.s32 %r251, %r250, %r4; - shr.u32 %r252, %r251, 1; - add.s32 %r299, %r65, %r252; - -BB0_75: - mul.wide.s32 %rd109, %r299, 4; - add.s64 %rd110, %rd31, %rd109; - ld.global.nc.f32 %f191, [%rd110]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f77; - sub.f32 %f194, %f83, %f1; - sub.f32 %f195, %f82, %f2; - sub.f32 %f196, %f81, %f3; - fma.rn.f32 %f227, %f194, %f193, %f78; - fma.rn.f32 %f228, %f195, %f193, %f79; - fma.rn.f32 %f229, %f196, %f193, %f80; - -BB0_76: - setp.eq.s64 %p46, %rd7, 0; - @%p46 bra BB0_78; - - cvta.to.global.u64 %rd111, %rd7; - add.s64 %rd113, %rd111, %rd16; - ld.global.nc.f32 %f197, [%rd113]; - mul.f32 %f230, %f197, %f230; - -BB0_78: - setp.eq.f32 %p47, %f230, 0f00000000; - mov.f32 %f231, 0f00000000; - @%p47 bra BB0_80; - - rcp.rn.f32 %f231, %f230; - -BB0_80: - cvta.to.global.u64 %rd114, %rd1; - add.s64 %rd116, %rd114, %rd16; - ld.global.f32 %f199, [%rd116]; - fma.rn.f32 %f200, %f227, %f231, %f199; - st.global.f32 [%rd116], %f200; - cvta.to.global.u64 %rd117, %rd2; - add.s64 %rd118, %rd117, %rd16; - ld.global.f32 %f201, [%rd118]; - fma.rn.f32 %f202, %f228, %f231, %f201; - st.global.f32 [%rd118], %f202; - cvta.to.global.u64 %rd119, %rd3; - add.s64 %rd120, %rd119, %rd16; - ld.global.f32 %f203, [%rd120]; - fma.rn.f32 %f204, %f229, %f231, %f203; - st.global.f32 [%rd120], %f204; - -BB0_81: - ret; -} - - diff --git a/cuda/dmi_70.ptx b/cuda/dmi_70.ptx index 37a3d01b9..325e812ab 100644 --- a/cuda/dmi_70.ptx +++ b/cuda/dmi_70.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_70 .address_size 64 @@ -30,12 +30,13 @@ .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -47,16 +48,17 @@ ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -81,7 +83,7 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -98,12 +100,12 @@ and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -122,35 +124,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -163,78 +165,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -244,213 +255,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -458,52 +486,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -511,73 +539,73 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } diff --git a/cuda/dmi_wrapper.go b/cuda/dmi_wrapper.go index 9ac694f6b..8869d88f7 100644 --- a/cuda/dmi_wrapper.go +++ b/cuda/dmi_wrapper.go @@ -5,68 +5,70 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for adddmi kernel var adddmi_code cu.Function // Stores the arguments for adddmi kernel invocation -type adddmi_args_t struct{ - arg_Hx unsafe.Pointer - arg_Hy unsafe.Pointer - arg_Hz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_aLUT2d unsafe.Pointer - arg_dLUT2d unsafe.Pointer - arg_regions unsafe.Pointer - arg_cx float32 - arg_cy float32 - arg_cz float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [18]unsafe.Pointer +type adddmi_args_t struct { + arg_Hx unsafe.Pointer + arg_Hy unsafe.Pointer + arg_Hz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_aLUT2d unsafe.Pointer + arg_dLUT2d unsafe.Pointer + arg_regions unsafe.Pointer + arg_cx float32 + arg_cy float32 + arg_cz float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + arg_OpenBC byte + argptr [19]unsafe.Pointer sync.Mutex } // Stores the arguments for adddmi kernel invocation var adddmi_args adddmi_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - adddmi_args.argptr[0] = unsafe.Pointer(&adddmi_args.arg_Hx) - adddmi_args.argptr[1] = unsafe.Pointer(&adddmi_args.arg_Hy) - adddmi_args.argptr[2] = unsafe.Pointer(&adddmi_args.arg_Hz) - adddmi_args.argptr[3] = unsafe.Pointer(&adddmi_args.arg_mx) - adddmi_args.argptr[4] = unsafe.Pointer(&adddmi_args.arg_my) - adddmi_args.argptr[5] = unsafe.Pointer(&adddmi_args.arg_mz) - adddmi_args.argptr[6] = unsafe.Pointer(&adddmi_args.arg_Ms_) - adddmi_args.argptr[7] = unsafe.Pointer(&adddmi_args.arg_Ms_mul) - adddmi_args.argptr[8] = unsafe.Pointer(&adddmi_args.arg_aLUT2d) - adddmi_args.argptr[9] = unsafe.Pointer(&adddmi_args.arg_dLUT2d) - adddmi_args.argptr[10] = unsafe.Pointer(&adddmi_args.arg_regions) - adddmi_args.argptr[11] = unsafe.Pointer(&adddmi_args.arg_cx) - adddmi_args.argptr[12] = unsafe.Pointer(&adddmi_args.arg_cy) - adddmi_args.argptr[13] = unsafe.Pointer(&adddmi_args.arg_cz) - adddmi_args.argptr[14] = unsafe.Pointer(&adddmi_args.arg_Nx) - adddmi_args.argptr[15] = unsafe.Pointer(&adddmi_args.arg_Ny) - adddmi_args.argptr[16] = unsafe.Pointer(&adddmi_args.arg_Nz) - adddmi_args.argptr[17] = unsafe.Pointer(&adddmi_args.arg_PBC) - } + adddmi_args.argptr[0] = unsafe.Pointer(&adddmi_args.arg_Hx) + adddmi_args.argptr[1] = unsafe.Pointer(&adddmi_args.arg_Hy) + adddmi_args.argptr[2] = unsafe.Pointer(&adddmi_args.arg_Hz) + adddmi_args.argptr[3] = unsafe.Pointer(&adddmi_args.arg_mx) + adddmi_args.argptr[4] = unsafe.Pointer(&adddmi_args.arg_my) + adddmi_args.argptr[5] = unsafe.Pointer(&adddmi_args.arg_mz) + adddmi_args.argptr[6] = unsafe.Pointer(&adddmi_args.arg_Ms_) + adddmi_args.argptr[7] = unsafe.Pointer(&adddmi_args.arg_Ms_mul) + adddmi_args.argptr[8] = unsafe.Pointer(&adddmi_args.arg_aLUT2d) + adddmi_args.argptr[9] = unsafe.Pointer(&adddmi_args.arg_dLUT2d) + adddmi_args.argptr[10] = unsafe.Pointer(&adddmi_args.arg_regions) + adddmi_args.argptr[11] = unsafe.Pointer(&adddmi_args.arg_cx) + adddmi_args.argptr[12] = unsafe.Pointer(&adddmi_args.arg_cy) + adddmi_args.argptr[13] = unsafe.Pointer(&adddmi_args.arg_cz) + adddmi_args.argptr[14] = unsafe.Pointer(&adddmi_args.arg_Nx) + adddmi_args.argptr[15] = unsafe.Pointer(&adddmi_args.arg_Ny) + adddmi_args.argptr[16] = unsafe.Pointer(&adddmi_args.arg_Nz) + adddmi_args.argptr[17] = unsafe.Pointer(&adddmi_args.arg_PBC) + adddmi_args.argptr[18] = unsafe.Pointer(&adddmi_args.arg_OpenBC) +} // Wrapper for adddmi CUDA kernel, asynchronous. -func k_adddmi_async ( Hx unsafe.Pointer, Hy unsafe.Pointer, Hz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, aLUT2d unsafe.Pointer, dLUT2d unsafe.Pointer, regions unsafe.Pointer, cx float32, cy float32, cz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_adddmi_async(Hx unsafe.Pointer, Hy unsafe.Pointer, Hz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, aLUT2d unsafe.Pointer, dLUT2d unsafe.Pointer, regions unsafe.Pointer, cx float32, cy float32, cz float32, Nx int, Ny int, Nz int, PBC byte, OpenBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("adddmi") } @@ -74,55 +76,54 @@ func k_adddmi_async ( Hx unsafe.Pointer, Hy unsafe.Pointer, Hz unsafe.Pointer, m adddmi_args.Lock() defer adddmi_args.Unlock() - if adddmi_code == 0{ + if adddmi_code == 0 { adddmi_code = fatbinLoad(adddmi_map, "adddmi") } - adddmi_args.arg_Hx = Hx - adddmi_args.arg_Hy = Hy - adddmi_args.arg_Hz = Hz - adddmi_args.arg_mx = mx - adddmi_args.arg_my = my - adddmi_args.arg_mz = mz - adddmi_args.arg_Ms_ = Ms_ - adddmi_args.arg_Ms_mul = Ms_mul - adddmi_args.arg_aLUT2d = aLUT2d - adddmi_args.arg_dLUT2d = dLUT2d - adddmi_args.arg_regions = regions - adddmi_args.arg_cx = cx - adddmi_args.arg_cy = cy - adddmi_args.arg_cz = cz - adddmi_args.arg_Nx = Nx - adddmi_args.arg_Ny = Ny - adddmi_args.arg_Nz = Nz - adddmi_args.arg_PBC = PBC - + adddmi_args.arg_Hx = Hx + adddmi_args.arg_Hy = Hy + adddmi_args.arg_Hz = Hz + adddmi_args.arg_mx = mx + adddmi_args.arg_my = my + adddmi_args.arg_mz = mz + adddmi_args.arg_Ms_ = Ms_ + adddmi_args.arg_Ms_mul = Ms_mul + adddmi_args.arg_aLUT2d = aLUT2d + adddmi_args.arg_dLUT2d = dLUT2d + adddmi_args.arg_regions = regions + adddmi_args.arg_cx = cx + adddmi_args.arg_cy = cy + adddmi_args.arg_cz = cz + adddmi_args.arg_Nx = Nx + adddmi_args.arg_Ny = Ny + adddmi_args.arg_Nz = Nz + adddmi_args.arg_PBC = PBC + adddmi_args.arg_OpenBC = OpenBC args := adddmi_args.argptr[:] cu.LaunchKernel(adddmi_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("adddmi") } } // maps compute capability on PTX code for adddmi kernel. -var adddmi_map = map[int]string{ 0: "" , -30: adddmi_ptx_30 , -35: adddmi_ptx_35 , -37: adddmi_ptx_37 , -50: adddmi_ptx_50 , -52: adddmi_ptx_52 , -53: adddmi_ptx_53 , -60: adddmi_ptx_60 , -61: adddmi_ptx_61 , -70: adddmi_ptx_70 , -75: adddmi_ptx_75 } +var adddmi_map = map[int]string{0: "", + 30: adddmi_ptx_30, + 35: adddmi_ptx_35, + 37: adddmi_ptx_37, + 50: adddmi_ptx_50, + 52: adddmi_ptx_52, + 53: adddmi_ptx_53, + 60: adddmi_ptx_60, + 61: adddmi_ptx_61, + 70: adddmi_ptx_70} // adddmi PTX code for various compute capabilities. -const( - adddmi_ptx_30 = ` +const ( + adddmi_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -147,13 +148,14 @@ const( .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<37>; - .reg .f32 %f<234>; - .reg .b32 %r<236>; + .reg .pred %p<57>; + .reg .b16 %rs<39>; + .reg .f32 %f<263>; + .reg .b32 %r<219>; .reg .b64 %rd<117>; @@ -164,550 +166,586 @@ const( ld.param.u64 %rd5, [adddmi_param_4]; ld.param.u64 %rd6, [adddmi_param_5]; ld.param.u64 %rd7, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd8, [adddmi_param_8]; ld.param.u64 %rd9, [adddmi_param_9]; ld.param.u64 %rd10, [adddmi_param_10]; - ld.param.f32 %f89, [adddmi_param_11]; - ld.param.f32 %f90, [adddmi_param_12]; - ld.param.f32 %f91, [adddmi_param_13]; - ld.param.u32 %r32, [adddmi_param_14]; - ld.param.u32 %r33, [adddmi_param_15]; - ld.param.u32 %r34, [adddmi_param_16]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; + ld.param.u32 %r33, [adddmi_param_14]; + ld.param.u32 %r34, [adddmi_param_15]; + ld.param.u32 %r35, [adddmi_param_16]; + ld.param.u8 %rs13, [adddmi_param_18]; ld.param.u8 %rs12, [adddmi_param_17]; - mov.u32 %r35, %ntid.x; - mov.u32 %r36, %ctaid.x; - mov.u32 %r37, %tid.x; - mad.lo.s32 %r1, %r35, %r36, %r37; - mov.u32 %r38, %ntid.y; - mov.u32 %r39, %ctaid.y; - mov.u32 %r40, %tid.y; - mad.lo.s32 %r2, %r38, %r39, %r40; - mov.u32 %r41, %ntid.z; - mov.u32 %r42, %ctaid.z; - mov.u32 %r43, %tid.z; - mad.lo.s32 %r3, %r41, %r42, %r43; - setp.ge.s32 %p1, %r2, %r33; - setp.ge.s32 %p2, %r1, %r32; + mov.u32 %r36, %ntid.x; + mov.u32 %r37, %ctaid.x; + mov.u32 %r38, %tid.x; + mad.lo.s32 %r1, %r36, %r37, %r38; + mov.u32 %r39, %ntid.y; + mov.u32 %r40, %ctaid.y; + mov.u32 %r41, %tid.y; + mad.lo.s32 %r2, %r39, %r40, %r41; + mov.u32 %r42, %ntid.z; + mov.u32 %r43, %ctaid.z; + mov.u32 %r44, %tid.z; + mad.lo.s32 %r3, %r42, %r43, %r44; + setp.ge.s32 %p1, %r2, %r34; + setp.ge.s32 %p2, %r1, %r33; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r34; + setp.ge.s32 %p4, %r3, %r35; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; cvta.to.global.u64 %rd11, %rd10; cvta.to.global.u64 %rd12, %rd6; cvta.to.global.u64 %rd13, %rd5; cvta.to.global.u64 %rd14, %rd4; - mad.lo.s32 %r44, %r3, %r33, %r2; - mad.lo.s32 %r45, %r44, %r32, %r1; - mul.wide.s32 %rd15, %r45, 4; + mad.lo.s32 %r45, %r3, %r34, %r2; + mul.lo.s32 %r4, %r45, %r33; + add.s32 %r46, %r4, %r1; + mul.wide.s32 %rd15, %r46, 4; add.s64 %rd16, %rd14, %rd15; - cvt.s64.s32 %rd17, %r45; + cvt.s64.s32 %rd17, %r46; add.s64 %rd18, %rd13, %rd15; add.s64 %rd19, %rd12, %rd15; add.s64 %rd20, %rd11, %rd17; ld.global.u8 %rs1, [%rd20]; ld.global.f32 %f1, [%rd16]; ld.global.f32 %f2, [%rd18]; - mul.f32 %f92, %f2, %f2; - fma.rn.f32 %f93, %f1, %f1, %f92; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.f32 %f3, [%rd19]; - fma.rn.f32 %f94, %f3, %f3, %f93; - setp.eq.f32 %p6, %f94, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; - and.b16 %rs13, %rs12, 1; - setp.eq.b16 %p7, %rs13, 1; - add.s32 %r4, %r1, -1; + and.b16 %rs14, %rs12, 1; + setp.eq.b16 %p7, %rs14, 1; + add.s32 %r5, %r1, -1; @!%p7 bra BB0_4; bra.uni BB0_3; BB0_3: - rem.s32 %r50, %r4, %r32; - add.s32 %r51, %r50, %r32; - rem.s32 %r230, %r51, %r32; + rem.s32 %r51, %r5, %r33; + add.s32 %r52, %r51, %r33; + rem.s32 %r213, %r52, %r33; bra.uni BB0_5; BB0_4: - mov.u32 %r52, 0; - max.s32 %r230, %r4, %r52; + mov.u32 %r53, 0; + max.s32 %r213, %r5, %r53; BB0_5: - mad.lo.s32 %r8, %r44, %r32, %r230; - setp.eq.b16 %p8, %rs13, 1; - setp.gt.s32 %p9, %r4, -1; + add.s32 %r9, %r213, %r4; + setp.eq.b16 %p8, %rs14, 1; + setp.gt.s32 %p9, %r5, -1; or.pred %p10, %p9, %p8; - mov.f32 %f208, 0f00000000; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f225, 0f00000000; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @!%p10 bra BB0_7; bra.uni BB0_6; BB0_6: - mul.wide.s32 %rd22, %r8, 4; + mul.wide.s32 %rd22, %r9, 4; add.s64 %rd23, %rd14, %rd22; - ld.global.f32 %f208, [%rd23]; + ld.global.f32 %f225, [%rd23]; add.s64 %rd25, %rd13, %rd22; - ld.global.f32 %f209, [%rd25]; + ld.global.f32 %f226, [%rd25]; add.s64 %rd27, %rd12, %rd22; - ld.global.f32 %f210, [%rd27]; + ld.global.f32 %f227, [%rd27]; BB0_7: - mul.f32 %f98, %f209, %f209; - fma.rn.f32 %f99, %f208, %f208, %f98; - fma.rn.f32 %f10, %f210, %f210, %f99; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs33, %rs1; + mov.u16 %rs35, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd29, %r8; + cvt.s64.s32 %rd29, %r9; add.s64 %rd30, %rd11, %rd29; - ld.global.u8 %rs33, [%rd30]; + ld.global.u8 %rs35, [%rd30]; BB0_9: - cvt.u32.u16 %r62, %rs1; - and.b32 %r63, %r62, 255; - setp.gt.u16 %p12, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; - and.b32 %r65, %r64, 255; - selp.b32 %r66, %r63, %r65, %p12; - selp.b32 %r67, %r65, %r63, %p12; - add.s32 %r68, %r67, 1; - mul.lo.s32 %r69, %r68, %r67; - shr.u32 %r70, %r69, 1; - add.s32 %r71, %r70, %r66; + cvt.u32.u16 %r54, %rs1; + and.b32 %r55, %r54, 255; + setp.gt.u16 %p12, %rs35, %rs1; + cvt.u32.u16 %r56, %rs35; + and.b32 %r57, %r56, 255; + selp.b32 %r58, %r55, %r57, %p12; + selp.b32 %r59, %r57, %r55, %p12; + add.s32 %r60, %r59, 1; + mul.lo.s32 %r61, %r60, %r59; + shr.u32 %r62, %r61, 1; + add.s32 %r63, %r62, %r58; cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r71, 4; + mul.wide.s32 %rd32, %r63, 4; add.s64 %rd33, %rd31, %rd32; ld.global.f32 %f11, [%rd33]; cvta.to.global.u64 %rd34, %rd9; add.s64 %rd35, %rd34, %rd32; ld.global.f32 %f12, [%rd35]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f100, %f12, 0f3F000000; - div.rn.f32 %f101, %f100, %f11; - mul.f32 %f102, %f101, %f89; - fma.rn.f32 %f208, %f3, %f102, %f1; - mul.f32 %f103, %f1, %f102; - sub.f32 %f210, %f3, %f103; - mov.f32 %f209, %f2; - -BB0_11: - setp.eq.b16 %p14, %rs13, 1; - mul.f32 %f18, %f89, %f89; - add.f32 %f104, %f11, %f11; - div.rn.f32 %f105, %f104, %f18; - sub.f32 %f106, %f208, %f1; - sub.f32 %f107, %f209, %f2; - sub.f32 %f108, %f210, %f3; - fma.rn.f32 %f109, %f106, %f105, 0f00000000; - fma.rn.f32 %f19, %f107, %f105, 0f00000000; - fma.rn.f32 %f110, %f105, %f108, 0f00000000; - div.rn.f32 %f111, %f12, %f89; - mul.f32 %f112, %f210, %f111; - sub.f32 %f20, %f109, %f112; - fma.rn.f32 %f21, %f208, %f111, %f110; - add.s32 %r9, %r1, 1; - @!%p14 bra BB0_13; - bra.uni BB0_12; + setp.ne.s16 %p13, %rs13, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; BB0_12: - rem.s32 %r76, %r9, %r32; - add.s32 %r77, %r76, %r32; - rem.s32 %r231, %r77, %r32; - bra.uni BB0_14; + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; BB0_13: - add.s32 %r78, %r32, -1; - min.s32 %r231, %r9, %r78; + setp.eq.b16 %p17, %rs14, 1; + add.s32 %r10, %r1, 1; + @!%p17 bra BB0_15; + bra.uni BB0_14; BB0_14: - setp.eq.b16 %p15, %rs13, 1; - mad.lo.s32 %r13, %r44, %r32, %r231; - setp.lt.s32 %p16, %r9, %r32; - or.pred %p17, %p16, %p15; - mov.f32 %f214, 0f00000000; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @!%p17 bra BB0_16; - bra.uni BB0_15; + rem.s32 %r68, %r10, %r33; + add.s32 %r69, %r68, %r33; + rem.s32 %r214, %r69, %r33; + bra.uni BB0_16; BB0_15: - mul.wide.s32 %rd37, %r13, 4; + add.s32 %r70, %r33, -1; + min.s32 %r214, %r10, %r70; + +BB0_16: + setp.eq.b16 %p18, %rs14, 1; + add.s32 %r14, %r214, %r4; + setp.lt.s32 %p19, %r10, %r33; + or.pred %p20, %p19, %p18; + mov.f32 %f231, 0f00000000; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @!%p20 bra BB0_18; + bra.uni BB0_17; + +BB0_17: + mul.wide.s32 %rd37, %r14, 4; add.s64 %rd38, %rd14, %rd37; - ld.global.f32 %f214, [%rd38]; + ld.global.f32 %f231, [%rd38]; add.s64 %rd40, %rd13, %rd37; - ld.global.f32 %f215, [%rd40]; + ld.global.f32 %f232, [%rd40]; add.s64 %rd42, %rd12, %rd37; - ld.global.f32 %f216, [%rd42]; + ld.global.f32 %f233, [%rd42]; -BB0_16: - mul.f32 %f116, %f215, %f215; - fma.rn.f32 %f117, %f214, %f214, %f116; - fma.rn.f32 %f28, %f216, %f216, %f117; - setp.eq.f32 %p18, %f28, 0f00000000; - mov.u16 %rs34, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs36, %rs1; + @%p21 bra BB0_20; - cvt.s64.s32 %rd44, %r13; + cvt.s64.s32 %rd44, %r14; add.s64 %rd45, %rd11, %rd44; - ld.global.u8 %rs34, [%rd45]; + ld.global.u8 %rs36, [%rd45]; -BB0_18: - setp.gt.u16 %p19, %rs34, %rs1; - cvt.u32.u16 %r90, %rs34; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r63, %r91, %p19; - selp.b32 %r93, %r91, %r63, %p19; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd47, %r97, 4; +BB0_20: + setp.gt.u16 %p22, %rs36, %rs1; + cvt.u32.u16 %r73, %rs36; + and.b32 %r74, %r73, 255; + selp.b32 %r75, %r55, %r74, %p22; + selp.b32 %r76, %r74, %r55, %p22; + add.s32 %r77, %r76, 1; + mul.lo.s32 %r78, %r77, %r76; + shr.u32 %r79, %r78, 1; + add.s32 %r80, %r79, %r75; + mul.wide.s32 %rd47, %r80, 4; add.s64 %rd48, %rd31, %rd47; - ld.global.f32 %f29, [%rd48]; + ld.global.f32 %f31, [%rd48]; add.s64 %rd50, %rd34, %rd47; - ld.global.f32 %f30, [%rd50]; - setp.neu.f32 %p20, %f28, 0f00000000; - @%p20 bra BB0_20; - - mul.f32 %f118, %f30, 0f3F000000; - div.rn.f32 %f119, %f118, %f29; - mul.f32 %f120, %f119, %f89; - mul.f32 %f121, %f3, %f120; - sub.f32 %f214, %f1, %f121; - fma.rn.f32 %f216, %f1, %f120, %f3; - mov.f32 %f215, %f2; + ld.global.f32 %f32, [%rd50]; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; -BB0_20: - add.f32 %f122, %f29, %f29; - div.rn.f32 %f123, %f122, %f18; - sub.f32 %f124, %f214, %f1; - sub.f32 %f125, %f215, %f2; - sub.f32 %f126, %f216, %f3; - fma.rn.f32 %f127, %f124, %f123, %f20; - fma.rn.f32 %f36, %f125, %f123, %f19; - fma.rn.f32 %f128, %f123, %f126, %f21; - div.rn.f32 %f129, %f30, %f89; - fma.rn.f32 %f37, %f216, %f129, %f127; - mul.f32 %f130, %f214, %f129; - sub.f32 %f38, %f128, %f130; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; + + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs6, %rs12, 2; - setp.eq.s16 %p21, %rs6, 0; - add.s32 %r14, %r2, -1; - @%p21 bra BB0_22; + setp.eq.s16 %p27, %rs6, 0; + add.s32 %r15, %r2, -1; + @%p27 bra BB0_26; - rem.s32 %r102, %r14, %r33; - add.s32 %r103, %r102, %r33; - rem.s32 %r232, %r103, %r33; - bra.uni BB0_23; + rem.s32 %r85, %r15, %r34; + add.s32 %r86, %r85, %r34; + rem.s32 %r215, %r86, %r34; + bra.uni BB0_27; -BB0_22: - mov.u32 %r104, 0; - max.s32 %r232, %r14, %r104; +BB0_26: + mov.u32 %r87, 0; + max.s32 %r215, %r15, %r87; -BB0_23: - mad.lo.s32 %r109, %r3, %r33, %r232; - mad.lo.s32 %r18, %r109, %r32, %r1; - setp.lt.s32 %p23, %r14, 0; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; - - mul.wide.s32 %rd52, %r18, 4; +BB0_27: + mad.lo.s32 %r92, %r3, %r34, %r215; + mad.lo.s32 %r19, %r92, %r33, %r1; + setp.lt.s32 %p29, %r15, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; + + mul.wide.s32 %rd52, %r19, 4; add.s64 %rd53, %rd14, %rd52; - ld.global.f32 %f220, [%rd53]; + ld.global.f32 %f240, [%rd53]; add.s64 %rd55, %rd13, %rd52; - ld.global.f32 %f221, [%rd55]; + ld.global.f32 %f241, [%rd55]; add.s64 %rd57, %rd12, %rd52; - ld.global.f32 %f222, [%rd57]; - -BB0_25: - mul.f32 %f134, %f221, %f221; - fma.rn.f32 %f135, %f220, %f220, %f134; - fma.rn.f32 %f45, %f222, %f222, %f135; - setp.eq.f32 %p25, %f45, 0f00000000; - mov.u16 %rs35, %rs1; - @%p25 bra BB0_27; + ld.global.f32 %f242, [%rd57]; - cvt.s64.s32 %rd59, %r18; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs37, %rs1; + @%p31 bra BB0_31; + + cvt.s64.s32 %rd59, %r19; add.s64 %rd60, %rd11, %rd59; - ld.global.u8 %rs35, [%rd60]; + ld.global.u8 %rs37, [%rd60]; -BB0_27: - setp.gt.u16 %p26, %rs35, %rs1; - cvt.u32.u16 %r116, %rs35; - and.b32 %r117, %r116, 255; - selp.b32 %r118, %r63, %r117, %p26; - selp.b32 %r119, %r117, %r63, %p26; - add.s32 %r120, %r119, 1; - mul.lo.s32 %r121, %r120, %r119; - shr.u32 %r122, %r121, 1; - add.s32 %r123, %r122, %r118; - mul.wide.s32 %rd62, %r123, 4; +BB0_31: + setp.gt.u16 %p32, %rs37, %rs1; + cvt.u32.u16 %r99, %rs37; + and.b32 %r100, %r99, 255; + selp.b32 %r101, %r55, %r100, %p32; + selp.b32 %r102, %r100, %r55, %p32; + add.s32 %r103, %r102, 1; + mul.lo.s32 %r104, %r103, %r102; + shr.u32 %r105, %r104, 1; + add.s32 %r106, %r105, %r101; + mul.wide.s32 %rd62, %r106, 4; add.s64 %rd63, %rd31, %rd62; - ld.global.f32 %f46, [%rd63]; + ld.global.f32 %f51, [%rd63]; add.s64 %rd65, %rd34, %rd62; - ld.global.f32 %f47, [%rd65]; - setp.neu.f32 %p27, %f45, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f136, %f47, 0f3F000000; - div.rn.f32 %f137, %f136, %f46; - mul.f32 %f138, %f137, %f90; - fma.rn.f32 %f221, %f3, %f138, %f2; - mul.f32 %f139, %f2, %f138; - sub.f32 %f222, %f3, %f139; - mov.f32 %f220, %f1; + ld.global.f32 %f52, [%rd65]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f53, %f90, %f90; - add.f32 %f140, %f46, %f46; - div.rn.f32 %f141, %f140, %f53; - sub.f32 %f142, %f220, %f1; - sub.f32 %f143, %f221, %f2; - sub.f32 %f144, %f222, %f3; - fma.rn.f32 %f54, %f142, %f141, %f37; - fma.rn.f32 %f145, %f143, %f141, %f36; - fma.rn.f32 %f146, %f141, %f144, %f38; - div.rn.f32 %f147, %f47, %f90; - mul.f32 %f148, %f222, %f147; - sub.f32 %f55, %f145, %f148; - fma.rn.f32 %f56, %f221, %f147, %f146; - add.s32 %r19, %r2, 1; - @%p21 bra BB0_31; - - rem.s32 %r128, %r19, %r33; - add.s32 %r129, %r128, %r33; - rem.s32 %r233, %r129, %r33; - bra.uni BB0_32; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; -BB0_31: - add.s32 %r130, %r33, -1; - min.s32 %r233, %r19, %r130; - -BB0_32: - mad.lo.s32 %r135, %r3, %r33, %r233; - mad.lo.s32 %r23, %r135, %r32, %r1; - setp.ge.s32 %p29, %r19, %r33; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; - - mul.wide.s32 %rd67, %r23, 4; + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: + add.s32 %r20, %r2, 1; + @%p27 bra BB0_37; + + rem.s32 %r111, %r20, %r34; + add.s32 %r112, %r111, %r34; + rem.s32 %r216, %r112, %r34; + bra.uni BB0_38; + +BB0_37: + add.s32 %r113, %r34, -1; + min.s32 %r216, %r20, %r113; + +BB0_38: + shr.u16 %rs26, %rs12, 1; + and.b16 %rs27, %rs26, 1; + setp.eq.b16 %p38, %rs27, 1; + not.pred %p39, %p38; + mad.lo.s32 %r118, %r3, %r34, %r216; + mad.lo.s32 %r24, %r118, %r33, %r1; + setp.ge.s32 %p40, %r20, %r34; + mov.f32 %f249, 0f00000000; + and.pred %p41, %p40, %p39; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p41 bra BB0_40; + + mul.wide.s32 %rd67, %r24, 4; add.s64 %rd68, %rd14, %rd67; - ld.global.f32 %f226, [%rd68]; + ld.global.f32 %f249, [%rd68]; add.s64 %rd70, %rd13, %rd67; - ld.global.f32 %f227, [%rd70]; + ld.global.f32 %f250, [%rd70]; add.s64 %rd72, %rd12, %rd67; - ld.global.f32 %f228, [%rd72]; + ld.global.f32 %f251, [%rd72]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f63, %f228, %f228, %f153; - setp.eq.f32 %p32, %f63, 0f00000000; - mov.u16 %rs36, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p42, %f70, 0f00000000; + mov.u16 %rs38, %rs1; + @%p42 bra BB0_42; - cvt.s64.s32 %rd74, %r23; + cvt.s64.s32 %rd74, %r24; add.s64 %rd75, %rd11, %rd74; - ld.global.u8 %rs36, [%rd75]; - -BB0_36: - setp.gt.u16 %p33, %rs36, %rs1; - cvt.u32.u16 %r142, %rs36; - and.b32 %r143, %r142, 255; - selp.b32 %r144, %r63, %r143, %p33; - selp.b32 %r145, %r143, %r63, %p33; - add.s32 %r146, %r145, 1; - mul.lo.s32 %r147, %r146, %r145; - shr.u32 %r148, %r147, 1; - add.s32 %r149, %r148, %r144; - mul.wide.s32 %rd77, %r149, 4; + ld.global.u8 %rs38, [%rd75]; + +BB0_42: + setp.gt.u16 %p43, %rs38, %rs1; + cvt.u32.u16 %r125, %rs38; + and.b32 %r126, %r125, 255; + selp.b32 %r127, %r55, %r126, %p43; + selp.b32 %r128, %r126, %r55, %p43; + add.s32 %r129, %r128, 1; + mul.lo.s32 %r130, %r129, %r128; + shr.u32 %r131, %r130, 1; + add.s32 %r132, %r131, %r127; + mul.wide.s32 %rd77, %r132, 4; add.s64 %rd78, %rd31, %rd77; - ld.global.f32 %f64, [%rd78]; + ld.global.f32 %f71, [%rd78]; add.s64 %rd80, %rd34, %rd77; - ld.global.f32 %f65, [%rd80]; - setp.neu.f32 %p34, %f63, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f65, 0f3F000000; - div.rn.f32 %f155, %f154, %f64; - mul.f32 %f156, %f155, %f90; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.f32 %f72, [%rd80]; + and.pred %p46, %p42, %p13; + @%p46 bra BB0_46; -BB0_38: - add.f32 %f158, %f64, %f64; - div.rn.f32 %f159, %f158, %f53; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f54; - fma.rn.f32 %f163, %f161, %f159, %f55; - fma.rn.f32 %f164, %f159, %f162, %f56; - div.rn.f32 %f165, %f65, %f90; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r34, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p47, %f70, 0f00000000; + @%p47 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p48, %r35, 1; + @%p48 bra BB0_54; and.b16 %rs11, %rs12, 4; - setp.eq.s16 %p36, %rs11, 0; - add.s32 %r24, %r3, -1; - @%p36 bra BB0_41; + setp.eq.s16 %p49, %rs11, 0; + add.s32 %r25, %r3, -1; + @%p49 bra BB0_49; - rem.s32 %r154, %r24, %r34; - add.s32 %r155, %r154, %r34; - rem.s32 %r234, %r155, %r34; - bra.uni BB0_42; + rem.s32 %r137, %r25, %r35; + add.s32 %r138, %r137, %r35; + rem.s32 %r217, %r138, %r35; + bra.uni BB0_50; -BB0_41: - mov.u32 %r156, 0; - max.s32 %r234, %r24, %r156; +BB0_49: + mov.u32 %r139, 0; + max.s32 %r217, %r25, %r139; -BB0_42: - mad.lo.s32 %r161, %r234, %r33, %r2; - mad.lo.s32 %r166, %r161, %r32, %r1; - cvt.s64.s32 %rd82, %r166; - mul.wide.s32 %rd83, %r166, 4; +BB0_50: + mad.lo.s32 %r144, %r217, %r34, %r2; + mad.lo.s32 %r149, %r144, %r33, %r1; + cvt.s64.s32 %rd82, %r149; + mul.wide.s32 %rd83, %r149, 4; add.s64 %rd84, %rd14, %rd83; add.s64 %rd86, %rd13, %rd83; add.s64 %rd88, %rd12, %rd83; - ld.global.f32 %f167, [%rd84]; - ld.global.f32 %f168, [%rd86]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.f32 %f171, [%rd88]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.f32 %f184, [%rd84]; + ld.global.f32 %f185, [%rd86]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.f32 %f188, [%rd88]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p50, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p50; + selp.f32 %f191, %f2, %f185, %p50; + selp.f32 %f192, %f3, %f188, %p50; add.s64 %rd90, %rd11, %rd82; - ld.global.u8 %rs28, [%rd90]; - setp.gt.u16 %p38, %rs28, %rs1; - cvt.u32.u16 %r167, %rs28; - selp.b32 %r170, %r63, %r167, %p38; - selp.b32 %r171, %r167, %r63, %p38; - add.s32 %r172, %r171, 1; - mul.lo.s32 %r173, %r172, %r171; - shr.u32 %r174, %r173, 1; - add.s32 %r175, %r174, %r170; - mul.wide.s32 %rd92, %r175, 4; + ld.global.u8 %rs30, [%rd90]; + setp.gt.u16 %p51, %rs30, %rs1; + cvt.u32.u16 %r150, %rs30; + selp.b32 %r153, %r55, %r150, %p51; + selp.b32 %r154, %r150, %r55, %p51; + add.s32 %r155, %r154, 1; + mul.lo.s32 %r156, %r155, %r154; + shr.u32 %r157, %r156, 1; + add.s32 %r158, %r157, %r153; + mul.wide.s32 %rd92, %r158, 4; add.s64 %rd93, %rd31, %rd92; - ld.global.f32 %f176, [%rd93]; - add.f32 %f177, %f176, %f176; - mul.f32 %f74, %f91, %f91; - div.rn.f32 %f178, %f177, %f74; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f75, %f178, %f179, %f229; - fma.rn.f32 %f76, %f178, %f180, %f230; - fma.rn.f32 %f77, %f178, %f181, %f231; - add.s32 %r28, %r3, 1; - @%p36 bra BB0_44; - - rem.s32 %r180, %r28, %r34; - add.s32 %r181, %r180, %r34; - rem.s32 %r235, %r181, %r34; - bra.uni BB0_45; - -BB0_44: - add.s32 %r182, %r34, -1; - min.s32 %r235, %r28, %r182; - -BB0_45: - mad.lo.s32 %r187, %r235, %r33, %r2; - mad.lo.s32 %r192, %r187, %r32, %r1; - cvt.s64.s32 %rd95, %r192; - mul.wide.s32 %rd96, %r192, 4; + ld.global.f32 %f193, [%rd93]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; + add.s32 %r29, %r3, 1; + @%p49 bra BB0_52; + + rem.s32 %r163, %r29, %r35; + add.s32 %r164, %r163, %r35; + rem.s32 %r218, %r164, %r35; + bra.uni BB0_53; + +BB0_52: + add.s32 %r165, %r35, -1; + min.s32 %r218, %r29, %r165; + +BB0_53: + mad.lo.s32 %r170, %r218, %r34, %r2; + mad.lo.s32 %r175, %r170, %r33, %r1; + cvt.s64.s32 %rd95, %r175; + mul.wide.s32 %rd96, %r175, 4; add.s64 %rd97, %rd14, %rd96; add.s64 %rd99, %rd13, %rd96; add.s64 %rd101, %rd12, %rd96; - ld.global.f32 %f182, [%rd97]; - ld.global.f32 %f183, [%rd99]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.f32 %f186, [%rd101]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.f32 %f199, [%rd97]; + ld.global.f32 %f200, [%rd99]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.f32 %f203, [%rd101]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p53, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p53; + selp.f32 %f206, %f2, %f200, %p53; + selp.f32 %f207, %f1, %f199, %p53; add.s64 %rd103, %rd11, %rd95; - ld.global.u8 %rs31, [%rd103]; - setp.gt.u16 %p41, %rs31, %rs1; - cvt.u32.u16 %r193, %rs31; - selp.b32 %r196, %r63, %r193, %p41; - selp.b32 %r197, %r193, %r63, %p41; - add.s32 %r198, %r197, 1; - mul.lo.s32 %r199, %r198, %r197; - shr.u32 %r200, %r199, 1; - add.s32 %r201, %r200, %r196; - mul.wide.s32 %rd105, %r201, 4; + ld.global.u8 %rs33, [%rd103]; + setp.gt.u16 %p54, %rs33, %rs1; + cvt.u32.u16 %r176, %rs33; + selp.b32 %r179, %r55, %r176, %p54; + selp.b32 %r180, %r176, %r55, %p54; + add.s32 %r181, %r180, 1; + mul.lo.s32 %r182, %r181, %r180; + shr.u32 %r183, %r182, 1; + add.s32 %r184, %r183, %r179; + mul.wide.s32 %rd105, %r184, 4; add.s64 %rd106, %rd31, %rd105; - ld.global.f32 %f191, [%rd106]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f74; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f75; - fma.rn.f32 %f230, %f193, %f195, %f76; - fma.rn.f32 %f231, %f193, %f196, %f77; - -BB0_46: - setp.eq.s64 %p42, %rd7, 0; - @%p42 bra BB0_48; - + ld.global.f32 %f208, [%rd106]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p55, %rd7, 0; + @%p55 bra BB0_56; + + mad.lo.s32 %r198, %r45, %r33, %r1; cvta.to.global.u64 %rd107, %rd7; - add.s64 %rd109, %rd107, %rd15; - ld.global.f32 %f197, [%rd109]; - mul.f32 %f232, %f197, %f232; + mul.wide.s32 %rd108, %r198, 4; + add.s64 %rd109, %rd107, %rd108; + ld.global.f32 %f214, [%rd109]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p56, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p56 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: + mad.lo.s32 %r212, %r45, %r33, %r1; cvta.to.global.u64 %rd110, %rd1; - add.s64 %rd112, %rd110, %rd15; - ld.global.f32 %f199, [%rd112]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd112], %f200; + mul.wide.s32 %rd111, %r212, 4; + add.s64 %rd112, %rd110, %rd111; + ld.global.f32 %f216, [%rd112]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd112], %f217; cvta.to.global.u64 %rd113, %rd2; - add.s64 %rd114, %rd113, %rd15; - ld.global.f32 %f201, [%rd114]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd114], %f202; + add.s64 %rd114, %rd113, %rd111; + ld.global.f32 %f218, [%rd114]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd114], %f219; cvta.to.global.u64 %rd115, %rd3; - add.s64 %rd116, %rd115, %rd15; - ld.global.f32 %f203, [%rd116]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd116], %f204; + add.s64 %rd116, %rd115, %rd111; + ld.global.f32 %f220, [%rd116]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd116], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_35 = ` + adddmi_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -732,12 +770,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -749,16 +788,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -783,7 +823,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -800,12 +840,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -824,35 +864,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -865,78 +905,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -946,213 +995,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -1160,52 +1226,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -1213,79 +1279,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_37 = ` + adddmi_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1310,12 +1376,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -1327,16 +1394,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -1361,7 +1429,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -1378,12 +1446,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -1402,35 +1470,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -1443,78 +1511,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -1524,213 +1601,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -1738,52 +1832,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -1791,79 +1885,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_50 = ` + adddmi_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1888,12 +1982,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -1905,16 +2000,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -1939,7 +2035,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -1956,12 +2052,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -1980,35 +2076,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -2021,78 +2117,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -2102,213 +2207,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -2316,52 +2438,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -2369,79 +2491,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_52 = ` + adddmi_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -2466,12 +2588,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -2483,16 +2606,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -2517,7 +2641,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -2534,12 +2658,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -2558,35 +2682,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -2599,78 +2723,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -2680,213 +2813,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -2894,52 +3044,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -2947,79 +3097,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_53 = ` + adddmi_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -3044,12 +3194,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -3061,16 +3212,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -3095,7 +3247,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -3112,12 +3264,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -3136,35 +3288,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -3177,78 +3329,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -3258,213 +3419,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -3472,52 +3650,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -3525,79 +3703,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_60 = ` + adddmi_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -3622,12 +3800,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -3639,16 +3818,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -3673,7 +3853,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -3690,12 +3870,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -3714,35 +3894,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -3755,78 +3935,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -3836,213 +4025,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -4050,52 +4256,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -4103,79 +4309,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_61 = ` + adddmi_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -4200,12 +4406,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -4217,16 +4424,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -4251,7 +4459,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -4268,12 +4476,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -4292,35 +4500,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -4333,78 +4541,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -4414,213 +4631,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; + + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; + +BB0_45: + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; + +BB0_46: + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -4628,52 +4862,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -4681,79 +4915,79 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - adddmi_ptx_70 = ` + adddmi_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -4778,12 +5012,13 @@ BB0_51: .param .u32 adddmi_param_14, .param .u32 adddmi_param_15, .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 + .param .u8 adddmi_param_17, + .param .u8 adddmi_param_18 ) { - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; + .reg .pred %p<56>; + .reg .b16 %rs<37>; + .reg .f32 %f<263>; .reg .b32 %r<128>; .reg .b64 %rd<85>; @@ -4795,16 +5030,17 @@ BB0_51: ld.param.u64 %rd12, [adddmi_param_4]; ld.param.u64 %rd13, [adddmi_param_5]; ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; + ld.param.f32 %f261, [adddmi_param_7]; ld.param.u64 %rd14, [adddmi_param_8]; ld.param.u64 %rd15, [adddmi_param_9]; ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; + ld.param.f32 %f99, [adddmi_param_11]; + ld.param.f32 %f100, [adddmi_param_12]; + ld.param.f32 %f101, [adddmi_param_13]; ld.param.u32 %r36, [adddmi_param_14]; ld.param.u32 %r37, [adddmi_param_15]; ld.param.u32 %r38, [adddmi_param_16]; + ld.param.u8 %rs14, [adddmi_param_18]; ld.param.u8 %rs13, [adddmi_param_17]; cvta.to.global.u64 %rd1, %rd15; cvta.to.global.u64 %rd2, %rd14; @@ -4829,7 +5065,7 @@ BB0_51: or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r38; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_59; mul.lo.s32 %r4, %r3, %r37; add.s32 %r48, %r4, %r2; @@ -4846,12 +5082,12 @@ BB0_51: and.b32 %r7, %r49, 255; ld.global.nc.f32 %f1, [%rd18]; ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; + mul.f32 %f102, %f2, %f2; + fma.rn.f32 %f103, %f1, %f1, %f102; ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; + fma.rn.f32 %f104, %f3, %f3, %f103; + setp.eq.f32 %p6, %f104, 0f00000000; + @%p6 bra BB0_59; and.b16 %rs2, %rs13, 1; setp.eq.s16 %p7, %rs2, 0; @@ -4870,35 +5106,35 @@ BB0_4: BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; + mov.f32 %f225, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; + mov.f32 %f226, %f225; + mov.f32 %f227, %f225; @%p10 bra BB0_7; mul.wide.s32 %rd23, %r12, 4; add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; + ld.global.nc.f32 %f225, [%rd24]; add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; + ld.global.nc.f32 %f226, [%rd25]; add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; + ld.global.nc.f32 %f227, [%rd26]; BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; + mul.f32 %f108, %f226, %f226; + fma.rn.f32 %f109, %f225, %f225, %f108; + fma.rn.f32 %f10, %f227, %f227, %f109; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; + mov.u16 %rs33, %rs1; @%p11 bra BB0_9; cvt.s64.s32 %rd27, %r12; add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; + ld.global.nc.u8 %rs33, [%rd28]; BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; + setp.gt.u16 %p12, %rs33, %rs1; + cvt.u32.u16 %r53, %rs33; and.b32 %r54, %r53, 255; selp.b32 %r55, %r7, %r54, %p12; selp.b32 %r56, %r54, %r7, %p12; @@ -4911,78 +5147,87 @@ BB0_9: ld.global.nc.f32 %f11, [%rd30]; add.s64 %rd31, %rd1, %rd29; ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; + setp.ne.s16 %p13, %rs14, 0; + mov.f32 %f237, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f238, %f237; + mov.f32 %f239, %f237; + @%p15 bra BB0_13; + + setp.neu.f32 %p16, %f10, 0f00000000; + @%p16 bra BB0_12; + + mul.f32 %f113, %f12, 0f3F000000; + div.rn.f32 %f114, %f113, %f11; + mul.f32 %f115, %f114, %f99; + fma.rn.f32 %f225, %f3, %f115, %f1; + mul.f32 %f116, %f1, %f115; + sub.f32 %f227, %f3, %f116; + mov.f32 %f226, %f2; + +BB0_12: + mul.f32 %f117, %f99, %f99; + add.f32 %f118, %f11, %f11; + div.rn.f32 %f119, %f118, %f117; + sub.f32 %f120, %f225, %f1; + sub.f32 %f121, %f226, %f2; + sub.f32 %f122, %f227, %f3; + fma.rn.f32 %f123, %f120, %f119, 0f00000000; + fma.rn.f32 %f238, %f121, %f119, 0f00000000; + fma.rn.f32 %f124, %f119, %f122, 0f00000000; + div.rn.f32 %f125, %f12, %f99; + mul.f32 %f126, %f227, %f125; + sub.f32 %f237, %f123, %f126; + fma.rn.f32 %f239, %f225, %f125, %f124; + +BB0_13: add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; + @%p7 bra BB0_15; rem.s32 %r61, %r13, %r36; add.s32 %r62, %r61, %r36; rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; + bra.uni BB0_16; -BB0_13: +BB0_15: add.s32 %r63, %r36, -1; min.s32 %r123, %r13, %r63; -BB0_14: +BB0_16: add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; + setp.ge.s32 %p18, %r13, %r36; + mov.f32 %f231, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f232, %f231; + mov.f32 %f233, %f231; + @%p20 bra BB0_18; mul.wide.s32 %rd32, %r17, 4; add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; + ld.global.nc.f32 %f231, [%rd33]; add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; + ld.global.nc.f32 %f232, [%rd34]; add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; + ld.global.nc.f32 %f233, [%rd35]; -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; +BB0_18: + mul.f32 %f130, %f232, %f232; + fma.rn.f32 %f131, %f231, %f231, %f130; + fma.rn.f32 %f30, %f233, %f233, %f131; + setp.eq.f32 %p21, %f30, 0f00000000; + mov.u16 %rs34, %rs1; + @%p21 bra BB0_20; cvt.s64.s32 %rd36, %r17; add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; + ld.global.nc.u8 %rs34, [%rd37]; -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; +BB0_20: + setp.gt.u16 %p22, %rs34, %rs1; + cvt.u32.u16 %r64, %rs34; and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; + selp.b32 %r66, %r7, %r65, %p22; + selp.b32 %r67, %r65, %r7, %p22; add.s32 %r68, %r67, 1; mul.lo.s32 %r69, %r68, %r67; shr.u32 %r70, %r69, 1; @@ -4992,791 +5237,230 @@ BB0_18: ld.global.nc.f32 %f31, [%rd39]; add.s64 %rd40, %rd1, %rd38; ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_24; - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; + setp.neu.f32 %p26, %f30, 0f00000000; + @%p26 bra BB0_23; -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; + mul.f32 %f132, %f32, 0f3F000000; + div.rn.f32 %f133, %f132, %f31; + mul.f32 %f134, %f133, %f99; + mul.f32 %f135, %f3, %f134; + sub.f32 %f231, %f1, %f135; + fma.rn.f32 %f233, %f1, %f134, %f3; + mov.f32 %f232, %f2; + +BB0_23: + mul.f32 %f136, %f99, %f99; + add.f32 %f137, %f31, %f31; + div.rn.f32 %f138, %f137, %f136; + sub.f32 %f139, %f231, %f1; + sub.f32 %f140, %f232, %f2; + sub.f32 %f141, %f233, %f3; + fma.rn.f32 %f142, %f139, %f138, %f237; + fma.rn.f32 %f238, %f140, %f138, %f238; + fma.rn.f32 %f143, %f138, %f141, %f239; + div.rn.f32 %f144, %f32, %f99; + fma.rn.f32 %f237, %f233, %f144, %f142; + mul.f32 %f145, %f231, %f144; + sub.f32 %f239, %f143, %f145; + +BB0_24: and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; + setp.eq.s16 %p27, %rs7, 0; add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; + @%p27 bra BB0_26; rem.s32 %r72, %r18, %r37; add.s32 %r73, %r72, %r37; rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; + bra.uni BB0_27; -BB0_22: +BB0_26: mov.u32 %r74, 0; max.s32 %r124, %r18, %r74; -BB0_23: +BB0_27: add.s32 %r75, %r124, %r4; mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; + setp.lt.s32 %p29, %r18, 0; + mov.f32 %f240, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f241, %f240; + mov.f32 %f242, %f240; + @%p30 bra BB0_29; mul.wide.s32 %rd41, %r22, 4; add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; + ld.global.nc.f32 %f240, [%rd42]; add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; + ld.global.nc.f32 %f241, [%rd43]; add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; + ld.global.nc.f32 %f242, [%rd44]; -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; +BB0_29: + mul.f32 %f149, %f241, %f241; + fma.rn.f32 %f150, %f240, %f240, %f149; + fma.rn.f32 %f50, %f242, %f242, %f150; + setp.eq.f32 %p31, %f50, 0f00000000; + mov.u16 %rs35, %rs1; + @%p31 bra BB0_31; cvt.s64.s32 %rd45, %r22; add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; + ld.global.nc.u8 %rs35, [%rd46]; -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; +BB0_31: + setp.gt.u16 %p32, %rs35, %rs1; + cvt.u32.u16 %r76, %rs35; and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; + selp.b32 %r78, %r7, %r77, %p32; + selp.b32 %r79, %r77, %r7, %p32; add.s32 %r80, %r79, 1; mul.lo.s32 %r81, %r80, %r79; shr.u32 %r82, %r81, 1; add.s32 %r83, %r82, %r78; mul.wide.s32 %rd47, %r83, 4; add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; + ld.global.nc.f32 %f51, [%rd48]; add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; + ld.global.nc.f32 %f52, [%rd49]; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_35; -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; + setp.neu.f32 %p36, %f50, 0f00000000; + @%p36 bra BB0_34; + + mul.f32 %f151, %f52, 0f3F000000; + div.rn.f32 %f152, %f151, %f51; + mul.f32 %f153, %f152, %f100; + fma.rn.f32 %f241, %f3, %f153, %f2; + mul.f32 %f154, %f2, %f153; + sub.f32 %f242, %f3, %f154; + mov.f32 %f240, %f1; + +BB0_34: + mul.f32 %f155, %f100, %f100; + add.f32 %f156, %f51, %f51; + div.rn.f32 %f157, %f156, %f155; + sub.f32 %f158, %f240, %f1; + sub.f32 %f159, %f241, %f2; + sub.f32 %f160, %f242, %f3; + fma.rn.f32 %f237, %f158, %f157, %f237; + fma.rn.f32 %f161, %f159, %f157, %f238; + fma.rn.f32 %f162, %f157, %f160, %f239; + div.rn.f32 %f163, %f52, %f100; + mul.f32 %f164, %f242, %f163; + sub.f32 %f238, %f161, %f164; + fma.rn.f32 %f239, %f241, %f163, %f162; + +BB0_35: add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; + @%p27 bra BB0_37; rem.s32 %r84, %r23, %r37; add.s32 %r85, %r84, %r37; rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; + bra.uni BB0_38; -BB0_31: +BB0_37: add.s32 %r86, %r37, -1; min.s32 %r125, %r23, %r86; -BB0_32: +BB0_38: add.s32 %r87, %r125, %r4; mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; + setp.ge.s32 %p38, %r23, %r37; + mov.f32 %f249, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f250, %f249; + mov.f32 %f251, %f249; + @%p40 bra BB0_40; mul.wide.s32 %rd50, %r27, 4; add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; + ld.global.nc.f32 %f249, [%rd51]; add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; + ld.global.nc.f32 %f250, [%rd52]; add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; + ld.global.nc.f32 %f251, [%rd53]; -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; +BB0_40: + mul.f32 %f168, %f250, %f250; + fma.rn.f32 %f169, %f249, %f249, %f168; + fma.rn.f32 %f70, %f251, %f251, %f169; + setp.eq.f32 %p41, %f70, 0f00000000; + mov.u16 %rs36, %rs1; + @%p41 bra BB0_42; cvt.s64.s32 %rd54, %r27; add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; + ld.global.nc.u8 %rs36, [%rd55]; -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; +BB0_42: + setp.gt.u16 %p42, %rs36, %rs1; + cvt.u32.u16 %r88, %rs36; and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; + selp.b32 %r90, %r7, %r89, %p42; + selp.b32 %r91, %r89, %r7, %p42; add.s32 %r92, %r91, 1; mul.lo.s32 %r93, %r92, %r91; shr.u32 %r94, %r93, 1; add.s32 %r95, %r94, %r90; mul.wide.s32 %rd56, %r95, 4; add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; + ld.global.nc.f32 %f71, [%rd57]; add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; - -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; - - and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; - - rem.s32 %r96, %r28, %r38; - add.s32 %r97, %r96, %r38; - rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + ld.global.nc.f32 %f72, [%rd58]; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_46; -BB0_41: - mov.u32 %r98, 0; - max.s32 %r126, %r28, %r98; + setp.neu.f32 %p46, %f70, 0f00000000; + @%p46 bra BB0_45; -BB0_42: - mad.lo.s32 %r99, %r126, %r37, %r2; - mad.lo.s32 %r100, %r99, %r36, %r1; - cvt.s64.s32 %rd59, %r100; - mul.wide.s32 %rd60, %r100, 4; - add.s64 %rd61, %rd6, %rd60; - add.s64 %rd62, %rd5, %rd60; - add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; - add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; - and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; - add.s32 %r105, %r104, 1; - mul.lo.s32 %r106, %r105, %r104; - shr.u32 %r107, %r106, 1; - add.s32 %r108, %r107, %r103; - mul.wide.s32 %rd65, %r108, 4; - add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; - add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; - - rem.s32 %r109, %r32, %r38; - add.s32 %r110, %r109, %r38; - rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; - -BB0_44: - add.s32 %r111, %r38, -1; - min.s32 %r127, %r32, %r111; + mul.f32 %f170, %f72, 0f3F000000; + div.rn.f32 %f171, %f170, %f71; + mul.f32 %f172, %f171, %f100; + mul.f32 %f173, %f3, %f172; + sub.f32 %f250, %f2, %f173; + fma.rn.f32 %f251, %f2, %f172, %f3; + mov.f32 %f249, %f1; BB0_45: - mad.lo.s32 %r112, %r127, %r37, %r2; - mad.lo.s32 %r113, %r112, %r36, %r1; - cvt.s64.s32 %rd67, %r113; - mul.wide.s32 %rd68, %r113, 4; - add.s64 %rd69, %rd6, %rd68; - add.s64 %rd70, %rd5, %rd68; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; - add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd73, %r121, 4; - add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; + mul.f32 %f174, %f100, %f100; + add.f32 %f175, %f71, %f71; + div.rn.f32 %f176, %f175, %f174; + sub.f32 %f177, %f249, %f1; + sub.f32 %f178, %f250, %f2; + sub.f32 %f179, %f251, %f3; + fma.rn.f32 %f237, %f177, %f176, %f237; + fma.rn.f32 %f180, %f178, %f176, %f238; + fma.rn.f32 %f181, %f176, %f179, %f239; + div.rn.f32 %f182, %f72, %f100; + fma.rn.f32 %f238, %f251, %f182, %f180; + mul.f32 %f183, %f250, %f182; + sub.f32 %f239, %f181, %f183; BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; - - cvta.to.global.u64 %rd75, %rd10; - add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; - -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; - - rcp.rn.f32 %f233, %f232; - -BB0_50: - cvta.to.global.u64 %rd78, %rd9; - cvta.to.global.u64 %rd79, %rd8; - cvta.to.global.u64 %rd80, %rd7; - add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; - add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; - add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; - -BB0_51: - ret; -} - - -` - adddmi_ptx_75 = ` -.version 6.3 -.target sm_75 -.address_size 64 - - // .globl adddmi - -.visible .entry adddmi( - .param .u64 adddmi_param_0, - .param .u64 adddmi_param_1, - .param .u64 adddmi_param_2, - .param .u64 adddmi_param_3, - .param .u64 adddmi_param_4, - .param .u64 adddmi_param_5, - .param .u64 adddmi_param_6, - .param .f32 adddmi_param_7, - .param .u64 adddmi_param_8, - .param .u64 adddmi_param_9, - .param .u64 adddmi_param_10, - .param .f32 adddmi_param_11, - .param .f32 adddmi_param_12, - .param .f32 adddmi_param_13, - .param .u32 adddmi_param_14, - .param .u32 adddmi_param_15, - .param .u32 adddmi_param_16, - .param .u8 adddmi_param_17 -) -{ - .reg .pred %p<44>; - .reg .b16 %rs<36>; - .reg .f32 %f<234>; - .reg .b32 %r<128>; - .reg .b64 %rd<85>; - - - ld.param.u64 %rd7, [adddmi_param_0]; - ld.param.u64 %rd8, [adddmi_param_1]; - ld.param.u64 %rd9, [adddmi_param_2]; - ld.param.u64 %rd11, [adddmi_param_3]; - ld.param.u64 %rd12, [adddmi_param_4]; - ld.param.u64 %rd13, [adddmi_param_5]; - ld.param.u64 %rd10, [adddmi_param_6]; - ld.param.f32 %f232, [adddmi_param_7]; - ld.param.u64 %rd14, [adddmi_param_8]; - ld.param.u64 %rd15, [adddmi_param_9]; - ld.param.u64 %rd16, [adddmi_param_10]; - ld.param.f32 %f95, [adddmi_param_11]; - ld.param.f32 %f96, [adddmi_param_12]; - ld.param.f32 %f97, [adddmi_param_13]; - ld.param.u32 %r36, [adddmi_param_14]; - ld.param.u32 %r37, [adddmi_param_15]; - ld.param.u32 %r38, [adddmi_param_16]; - ld.param.u8 %rs13, [adddmi_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r39, %ntid.x; - mov.u32 %r40, %ctaid.x; - mov.u32 %r41, %tid.x; - mad.lo.s32 %r1, %r39, %r40, %r41; - mov.u32 %r42, %ntid.y; - mov.u32 %r43, %ctaid.y; - mov.u32 %r44, %tid.y; - mad.lo.s32 %r2, %r42, %r43, %r44; - mov.u32 %r45, %ntid.z; - mov.u32 %r46, %ctaid.z; - mov.u32 %r47, %tid.z; - mad.lo.s32 %r3, %r45, %r46, %r47; - setp.ge.s32 %p1, %r2, %r37; - setp.ge.s32 %p2, %r1, %r36; - or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r38; - or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; - - mul.lo.s32 %r4, %r3, %r37; - add.s32 %r48, %r4, %r2; - mul.lo.s32 %r5, %r48, %r36; - add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r49, %rs1; - and.b32 %r7, %r49, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f98, %f2, %f2; - fma.rn.f32 %f99, %f1, %f1, %f98; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f100, %f3, %f3, %f99; - setp.eq.f32 %p6, %f100, 0f00000000; - @%p6 bra BB0_51; - - and.b16 %rs2, %rs13, 1; - setp.eq.s16 %p7, %rs2, 0; - add.s32 %r8, %r1, -1; - @%p7 bra BB0_4; - - rem.s32 %r50, %r8, %r36; - add.s32 %r51, %r50, %r36; - rem.s32 %r122, %r51, %r36; - bra.uni BB0_5; - -BB0_4: - mov.u32 %r52, 0; - max.s32 %r122, %r8, %r52; - -BB0_5: - add.s32 %r12, %r122, %r5; - setp.lt.s32 %p9, %r8, 0; - mov.f32 %f208, 0f00000000; - and.pred %p10, %p9, %p7; - mov.f32 %f209, %f208; - mov.f32 %f210, %f208; - @%p10 bra BB0_7; - - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f208, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f209, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f210, [%rd26]; - -BB0_7: - mul.f32 %f104, %f209, %f209; - fma.rn.f32 %f105, %f208, %f208, %f104; - fma.rn.f32 %f10, %f210, %f210, %f105; - setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs32, %rs1; - @%p11 bra BB0_9; - - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs32, [%rd28]; - -BB0_9: - setp.gt.u16 %p12, %rs32, %rs1; - cvt.u32.u16 %r53, %rs32; - and.b32 %r54, %r53, 255; - selp.b32 %r55, %r7, %r54, %p12; - selp.b32 %r56, %r54, %r7, %p12; - add.s32 %r57, %r56, 1; - mul.lo.s32 %r58, %r57, %r56; - shr.u32 %r59, %r58, 1; - add.s32 %r60, %r59, %r55; - mul.wide.s32 %rd29, %r60, 4; - add.s64 %rd30, %rd2, %rd29; - ld.global.nc.f32 %f11, [%rd30]; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f12, [%rd31]; - setp.neu.f32 %p13, %f10, 0f00000000; - @%p13 bra BB0_11; - - mul.f32 %f106, %f12, 0f3F000000; - div.rn.f32 %f107, %f106, %f11; - mul.f32 %f108, %f107, %f95; - fma.rn.f32 %f208, %f3, %f108, %f1; - mul.f32 %f109, %f1, %f108; - sub.f32 %f210, %f3, %f109; - mov.f32 %f209, %f2; - -BB0_11: - mul.f32 %f18, %f95, %f95; - add.f32 %f110, %f11, %f11; - div.rn.f32 %f111, %f110, %f18; - sub.f32 %f112, %f208, %f1; - sub.f32 %f113, %f209, %f2; - sub.f32 %f114, %f210, %f3; - fma.rn.f32 %f19, %f112, %f111, 0f00000000; - fma.rn.f32 %f20, %f113, %f111, 0f00000000; - fma.rn.f32 %f115, %f111, %f114, 0f00000000; - div.rn.f32 %f21, %f12, %f95; - fma.rn.f32 %f22, %f208, %f21, %f115; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_13; - - rem.s32 %r61, %r13, %r36; - add.s32 %r62, %r61, %r36; - rem.s32 %r123, %r62, %r36; - bra.uni BB0_14; - -BB0_13: - add.s32 %r63, %r36, -1; - min.s32 %r123, %r13, %r63; - -BB0_14: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r36; - mul.f32 %f119, %f210, %f21; - sub.f32 %f23, %f19, %f119; - mov.f32 %f214, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f215, %f214; - mov.f32 %f216, %f214; - @%p17 bra BB0_16; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f214, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f215, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f216, [%rd35]; - -BB0_16: - mul.f32 %f120, %f215, %f215; - fma.rn.f32 %f121, %f214, %f214, %f120; - fma.rn.f32 %f30, %f216, %f216, %f121; - setp.eq.f32 %p18, %f30, 0f00000000; - mov.u16 %rs33, %rs1; - @%p18 bra BB0_18; - - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs33, [%rd37]; - -BB0_18: - setp.gt.u16 %p19, %rs33, %rs1; - cvt.u32.u16 %r64, %rs33; - and.b32 %r65, %r64, 255; - selp.b32 %r66, %r7, %r65, %p19; - selp.b32 %r67, %r65, %r7, %p19; - add.s32 %r68, %r67, 1; - mul.lo.s32 %r69, %r68, %r67; - shr.u32 %r70, %r69, 1; - add.s32 %r71, %r70, %r66; - mul.wide.s32 %rd38, %r71, 4; - add.s64 %rd39, %rd2, %rd38; - ld.global.nc.f32 %f31, [%rd39]; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f32, [%rd40]; - setp.neu.f32 %p20, %f30, 0f00000000; - @%p20 bra BB0_20; - - mul.f32 %f122, %f32, 0f3F000000; - div.rn.f32 %f123, %f122, %f31; - mul.f32 %f124, %f123, %f95; - mul.f32 %f125, %f3, %f124; - sub.f32 %f214, %f1, %f125; - fma.rn.f32 %f216, %f1, %f124, %f3; - mov.f32 %f215, %f2; - -BB0_20: - add.f32 %f126, %f31, %f31; - div.rn.f32 %f127, %f126, %f18; - sub.f32 %f128, %f214, %f1; - sub.f32 %f129, %f215, %f2; - sub.f32 %f130, %f216, %f3; - fma.rn.f32 %f131, %f128, %f127, %f23; - fma.rn.f32 %f38, %f129, %f127, %f20; - fma.rn.f32 %f39, %f127, %f130, %f22; - div.rn.f32 %f40, %f32, %f95; - fma.rn.f32 %f41, %f216, %f40, %f131; - and.b16 %rs7, %rs13, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; - @%p21 bra BB0_22; - - rem.s32 %r72, %r18, %r37; - add.s32 %r73, %r72, %r37; - rem.s32 %r124, %r73, %r37; - bra.uni BB0_23; - -BB0_22: - mov.u32 %r74, 0; - max.s32 %r124, %r18, %r74; - -BB0_23: - add.s32 %r75, %r124, %r4; - mad.lo.s32 %r22, %r75, %r36, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f135, %f214, %f40; - sub.f32 %f42, %f39, %f135; - mov.f32 %f220, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f221, %f220; - mov.f32 %f222, %f220; - @%p24 bra BB0_25; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f220, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f221, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f222, [%rd44]; - -BB0_25: - mul.f32 %f136, %f221, %f221; - fma.rn.f32 %f137, %f220, %f220, %f136; - fma.rn.f32 %f49, %f222, %f222, %f137; - setp.eq.f32 %p25, %f49, 0f00000000; - mov.u16 %rs34, %rs1; - @%p25 bra BB0_27; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs34, [%rd46]; - -BB0_27: - setp.gt.u16 %p26, %rs34, %rs1; - cvt.u32.u16 %r76, %rs34; - and.b32 %r77, %r76, 255; - selp.b32 %r78, %r7, %r77, %p26; - selp.b32 %r79, %r77, %r7, %p26; - add.s32 %r80, %r79, 1; - mul.lo.s32 %r81, %r80, %r79; - shr.u32 %r82, %r81, 1; - add.s32 %r83, %r82, %r78; - mul.wide.s32 %rd47, %r83, 4; - add.s64 %rd48, %rd2, %rd47; - ld.global.nc.f32 %f50, [%rd48]; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f51, [%rd49]; - setp.neu.f32 %p27, %f49, 0f00000000; - @%p27 bra BB0_29; - - mul.f32 %f138, %f51, 0f3F000000; - div.rn.f32 %f139, %f138, %f50; - mul.f32 %f140, %f139, %f96; - fma.rn.f32 %f221, %f3, %f140, %f2; - mul.f32 %f141, %f2, %f140; - sub.f32 %f222, %f3, %f141; - mov.f32 %f220, %f1; - -BB0_29: - mul.f32 %f57, %f96, %f96; - add.f32 %f142, %f50, %f50; - div.rn.f32 %f143, %f142, %f57; - sub.f32 %f144, %f220, %f1; - sub.f32 %f145, %f221, %f2; - sub.f32 %f146, %f222, %f3; - fma.rn.f32 %f58, %f144, %f143, %f41; - fma.rn.f32 %f59, %f145, %f143, %f38; - fma.rn.f32 %f147, %f143, %f146, %f42; - div.rn.f32 %f60, %f51, %f96; - fma.rn.f32 %f61, %f221, %f60, %f147; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_31; - - rem.s32 %r84, %r23, %r37; - add.s32 %r85, %r84, %r37; - rem.s32 %r125, %r85, %r37; - bra.uni BB0_32; - -BB0_31: - add.s32 %r86, %r37, -1; - min.s32 %r125, %r23, %r86; - -BB0_32: - add.s32 %r87, %r125, %r4; - mad.lo.s32 %r27, %r87, %r36, %r1; - setp.ge.s32 %p29, %r23, %r37; - mul.f32 %f151, %f222, %f60; - sub.f32 %f62, %f59, %f151; - mov.f32 %f226, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f227, %f226; - mov.f32 %f228, %f226; - @%p31 bra BB0_34; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f226, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f227, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f228, [%rd53]; - -BB0_34: - mul.f32 %f152, %f227, %f227; - fma.rn.f32 %f153, %f226, %f226, %f152; - fma.rn.f32 %f69, %f228, %f228, %f153; - setp.eq.f32 %p32, %f69, 0f00000000; - mov.u16 %rs35, %rs1; - @%p32 bra BB0_36; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs35, [%rd55]; - -BB0_36: - setp.gt.u16 %p33, %rs35, %rs1; - cvt.u32.u16 %r88, %rs35; - and.b32 %r89, %r88, 255; - selp.b32 %r90, %r7, %r89, %p33; - selp.b32 %r91, %r89, %r7, %p33; - add.s32 %r92, %r91, 1; - mul.lo.s32 %r93, %r92, %r91; - shr.u32 %r94, %r93, 1; - add.s32 %r95, %r94, %r90; - mul.wide.s32 %rd56, %r95, 4; - add.s64 %rd57, %rd2, %rd56; - ld.global.nc.f32 %f70, [%rd57]; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f71, [%rd58]; - setp.neu.f32 %p34, %f69, 0f00000000; - @%p34 bra BB0_38; - - mul.f32 %f154, %f71, 0f3F000000; - div.rn.f32 %f155, %f154, %f70; - mul.f32 %f156, %f155, %f96; - mul.f32 %f157, %f3, %f156; - sub.f32 %f227, %f2, %f157; - fma.rn.f32 %f228, %f2, %f156, %f3; - mov.f32 %f226, %f1; - -BB0_38: - add.f32 %f158, %f70, %f70; - div.rn.f32 %f159, %f158, %f57; - sub.f32 %f160, %f226, %f1; - sub.f32 %f161, %f227, %f2; - sub.f32 %f162, %f228, %f3; - fma.rn.f32 %f229, %f160, %f159, %f58; - fma.rn.f32 %f163, %f161, %f159, %f62; - fma.rn.f32 %f164, %f159, %f162, %f61; - div.rn.f32 %f165, %f71, %f96; - fma.rn.f32 %f230, %f228, %f165, %f163; - mul.f32 %f166, %f227, %f165; - sub.f32 %f231, %f164, %f166; - setp.eq.s32 %p35, %r38, 1; - @%p35 bra BB0_46; + setp.eq.s32 %p47, %r38, 1; + @%p47 bra BB0_54; and.b16 %rs12, %rs13, 4; - setp.eq.s16 %p36, %rs12, 0; + setp.eq.s16 %p48, %rs12, 0; add.s32 %r28, %r3, -1; - @%p36 bra BB0_41; + @%p48 bra BB0_49; rem.s32 %r96, %r28, %r38; add.s32 %r97, %r96, %r38; rem.s32 %r126, %r97, %r38; - bra.uni BB0_42; + bra.uni BB0_50; -BB0_41: +BB0_49: mov.u32 %r98, 0; max.s32 %r126, %r28, %r98; -BB0_42: +BB0_50: mad.lo.s32 %r99, %r126, %r37, %r2; mad.lo.s32 %r100, %r99, %r36, %r1; cvt.s64.s32 %rd59, %r100; @@ -5784,52 +5468,52 @@ BB0_42: add.s64 %rd61, %rd6, %rd60; add.s64 %rd62, %rd5, %rd60; add.s64 %rd63, %rd4, %rd60; - ld.global.nc.f32 %f167, [%rd61]; - ld.global.nc.f32 %f168, [%rd62]; - mul.f32 %f169, %f168, %f168; - fma.rn.f32 %f170, %f167, %f167, %f169; - ld.global.nc.f32 %f171, [%rd63]; - fma.rn.f32 %f172, %f171, %f171, %f170; - setp.eq.f32 %p37, %f172, 0f00000000; - selp.f32 %f173, %f1, %f167, %p37; - selp.f32 %f174, %f2, %f168, %p37; - selp.f32 %f175, %f3, %f171, %p37; + ld.global.nc.f32 %f184, [%rd61]; + ld.global.nc.f32 %f185, [%rd62]; + mul.f32 %f186, %f185, %f185; + fma.rn.f32 %f187, %f184, %f184, %f186; + ld.global.nc.f32 %f188, [%rd63]; + fma.rn.f32 %f189, %f188, %f188, %f187; + setp.eq.f32 %p49, %f189, 0f00000000; + selp.f32 %f190, %f1, %f184, %p49; + selp.f32 %f191, %f2, %f185, %p49; + selp.f32 %f192, %f3, %f188, %p49; add.s64 %rd64, %rd3, %rd59; - ld.global.nc.u8 %rs25, [%rd64]; - setp.gt.u16 %p38, %rs25, %rs1; - cvt.u32.u16 %r101, %rs25; + ld.global.nc.u8 %rs26, [%rd64]; + setp.gt.u16 %p50, %rs26, %rs1; + cvt.u32.u16 %r101, %rs26; and.b32 %r102, %r101, 255; - selp.b32 %r103, %r7, %r102, %p38; - selp.b32 %r104, %r102, %r7, %p38; + selp.b32 %r103, %r7, %r102, %p50; + selp.b32 %r104, %r102, %r7, %p50; add.s32 %r105, %r104, 1; mul.lo.s32 %r106, %r105, %r104; shr.u32 %r107, %r106, 1; add.s32 %r108, %r107, %r103; mul.wide.s32 %rd65, %r108, 4; add.s64 %rd66, %rd2, %rd65; - ld.global.nc.f32 %f176, [%rd66]; - add.f32 %f177, %f176, %f176; - mul.f32 %f80, %f97, %f97; - div.rn.f32 %f178, %f177, %f80; - sub.f32 %f179, %f173, %f1; - sub.f32 %f180, %f174, %f2; - sub.f32 %f181, %f175, %f3; - fma.rn.f32 %f81, %f178, %f179, %f229; - fma.rn.f32 %f82, %f178, %f180, %f230; - fma.rn.f32 %f83, %f178, %f181, %f231; + ld.global.nc.f32 %f193, [%rd66]; + add.f32 %f194, %f193, %f193; + mul.f32 %f84, %f101, %f101; + div.rn.f32 %f195, %f194, %f84; + sub.f32 %f196, %f190, %f1; + sub.f32 %f197, %f191, %f2; + sub.f32 %f198, %f192, %f3; + fma.rn.f32 %f85, %f195, %f196, %f237; + fma.rn.f32 %f86, %f195, %f197, %f238; + fma.rn.f32 %f87, %f195, %f198, %f239; add.s32 %r32, %r3, 1; - @%p36 bra BB0_44; + @%p48 bra BB0_52; rem.s32 %r109, %r32, %r38; add.s32 %r110, %r109, %r38; rem.s32 %r127, %r110, %r38; - bra.uni BB0_45; + bra.uni BB0_53; -BB0_44: +BB0_52: add.s32 %r111, %r38, -1; min.s32 %r127, %r32, %r111; -BB0_45: +BB0_53: mad.lo.s32 %r112, %r127, %r37, %r2; mad.lo.s32 %r113, %r112, %r36, %r1; cvt.s64.s32 %rd67, %r113; @@ -5837,76 +5521,76 @@ BB0_45: add.s64 %rd69, %rd6, %rd68; add.s64 %rd70, %rd5, %rd68; add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f182, [%rd69]; - ld.global.nc.f32 %f183, [%rd70]; - mul.f32 %f184, %f183, %f183; - fma.rn.f32 %f185, %f182, %f182, %f184; - ld.global.nc.f32 %f186, [%rd71]; - fma.rn.f32 %f187, %f186, %f186, %f185; - setp.eq.f32 %p40, %f187, 0f00000000; - selp.f32 %f188, %f3, %f186, %p40; - selp.f32 %f189, %f2, %f183, %p40; - selp.f32 %f190, %f1, %f182, %p40; + ld.global.nc.f32 %f199, [%rd69]; + ld.global.nc.f32 %f200, [%rd70]; + mul.f32 %f201, %f200, %f200; + fma.rn.f32 %f202, %f199, %f199, %f201; + ld.global.nc.f32 %f203, [%rd71]; + fma.rn.f32 %f204, %f203, %f203, %f202; + setp.eq.f32 %p52, %f204, 0f00000000; + selp.f32 %f205, %f3, %f203, %p52; + selp.f32 %f206, %f2, %f200, %p52; + selp.f32 %f207, %f1, %f199, %p52; add.s64 %rd72, %rd3, %rd67; - ld.global.nc.u8 %rs29, [%rd72]; - setp.gt.u16 %p41, %rs29, %rs1; - cvt.u32.u16 %r114, %rs29; + ld.global.nc.u8 %rs30, [%rd72]; + setp.gt.u16 %p53, %rs30, %rs1; + cvt.u32.u16 %r114, %rs30; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p41; - selp.b32 %r117, %r115, %r7, %p41; + selp.b32 %r116, %r7, %r115, %p53; + selp.b32 %r117, %r115, %r7, %p53; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; mul.wide.s32 %rd73, %r121, 4; add.s64 %rd74, %rd2, %rd73; - ld.global.nc.f32 %f191, [%rd74]; - add.f32 %f192, %f191, %f191; - div.rn.f32 %f193, %f192, %f80; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f189, %f2; - sub.f32 %f196, %f188, %f3; - fma.rn.f32 %f229, %f193, %f194, %f81; - fma.rn.f32 %f230, %f193, %f195, %f82; - fma.rn.f32 %f231, %f193, %f196, %f83; - -BB0_46: - setp.eq.s64 %p42, %rd10, 0; - @%p42 bra BB0_48; + ld.global.nc.f32 %f208, [%rd74]; + add.f32 %f209, %f208, %f208; + div.rn.f32 %f210, %f209, %f84; + sub.f32 %f211, %f207, %f1; + sub.f32 %f212, %f206, %f2; + sub.f32 %f213, %f205, %f3; + fma.rn.f32 %f237, %f210, %f211, %f85; + fma.rn.f32 %f238, %f210, %f212, %f86; + fma.rn.f32 %f239, %f210, %f213, %f87; + +BB0_54: + setp.eq.s64 %p54, %rd10, 0; + @%p54 bra BB0_56; cvta.to.global.u64 %rd75, %rd10; add.s64 %rd77, %rd75, %rd17; - ld.global.nc.f32 %f197, [%rd77]; - mul.f32 %f232, %f197, %f232; + ld.global.nc.f32 %f214, [%rd77]; + mul.f32 %f261, %f214, %f261; -BB0_48: - setp.eq.f32 %p43, %f232, 0f00000000; - mov.f32 %f233, 0f00000000; - @%p43 bra BB0_50; +BB0_56: + setp.eq.f32 %p55, %f261, 0f00000000; + mov.f32 %f262, 0f00000000; + @%p55 bra BB0_58; - rcp.rn.f32 %f233, %f232; + rcp.rn.f32 %f262, %f261; -BB0_50: +BB0_58: cvta.to.global.u64 %rd78, %rd9; cvta.to.global.u64 %rd79, %rd8; cvta.to.global.u64 %rd80, %rd7; add.s64 %rd82, %rd80, %rd17; - ld.global.f32 %f199, [%rd82]; - fma.rn.f32 %f200, %f229, %f233, %f199; - st.global.f32 [%rd82], %f200; + ld.global.f32 %f216, [%rd82]; + fma.rn.f32 %f217, %f237, %f262, %f216; + st.global.f32 [%rd82], %f217; add.s64 %rd83, %rd79, %rd17; - ld.global.f32 %f201, [%rd83]; - fma.rn.f32 %f202, %f230, %f233, %f201; - st.global.f32 [%rd83], %f202; + ld.global.f32 %f218, [%rd83]; + fma.rn.f32 %f219, %f238, %f262, %f218; + st.global.f32 [%rd83], %f219; add.s64 %rd84, %rd78, %rd17; - ld.global.f32 %f203, [%rd84]; - fma.rn.f32 %f204, %f231, %f233, %f203; - st.global.f32 [%rd84], %f204; + ld.global.f32 %f220, [%rd84]; + fma.rn.f32 %f221, %f239, %f262, %f220; + st.global.f32 [%rd84], %f221; -BB0_51: +BB0_59: ret; } ` - ) +) diff --git a/cuda/dmibulk.cu b/cuda/dmibulk.cu index 6bfb25de2..47e43113c 100644 --- a/cuda/dmibulk.cu +++ b/cuda/dmibulk.cu @@ -35,7 +35,7 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float* __restrict__ Ms_, float Ms_mul, float* __restrict__ aLUT2d, float* __restrict__ DLUT2d, uint8_t* __restrict__ regions, - float cx, float cy, float cz, int Nx, int Ny, int Nz, uint8_t PBC) { + float cx, float cy, float cz, int Nx, int Ny, int Nz, uint8_t PBC, uint8_t OpenBC) { int ix = blockIdx.x * blockDim.x + threadIdx.x; int iy = blockIdx.y * blockDim.y + threadIdx.y; @@ -66,14 +66,16 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float A = aLUT2d[symidx(r0, r1)]; float D = DLUT2d[symidx(r0, r1)]; float D_2A = D/(2.0f*A); - if (is0(m1)) { // neighbor missing - m1.x = m0.x; - m1.y = m0.y - (-cx * D_2A * m0.z); - m1.z = m0.z + (-cx * D_2A * m0.y); + if (!is0(m1) || !OpenBC){ // do nothing at an open boundary + if (is0(m1)) { // neighbor missing + m1.x = m0.x; + m1.y = m0.y - (-cx * D_2A * m0.z); + m1.z = m0.z + (-cx * D_2A * m0.y); + } + h += (2.0f*A/(cx*cx)) * (m1 - m0); // exchange + h.y += (D/cx)*(-m1.z); + h.z -= (D/cx)*(-m1.y); } - h += (2.0f*A/(cx*cx)) * (m1 - m0); // exchange - h.y += (D/cx)*(-m1.z); - h.z -= (D/cx)*(-m1.y); } @@ -87,14 +89,16 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float A = aLUT2d[symidx(r0, r1)]; float D = DLUT2d[symidx(r0, r1)]; float D_2A = D/(2.0f*A); - if (is0(m2)) { - m2.x = m0.x; - m2.y = m0.y - (+cx * D_2A * m0.z); - m2.z = m0.z + (+cx * D_2A * m0.y); + if (!is0(m2) || !OpenBC){ + if (is0(m2)) { + m2.x = m0.x; + m2.y = m0.y - (+cx * D_2A * m0.z); + m2.z = m0.z + (+cx * D_2A * m0.y); + } + h += (2.0f*A/(cx*cx)) * (m2 - m0); + h.y += (D/cx)*(m2.z); + h.z -= (D/cx)*(m2.y); } - h += (2.0f*A/(cx*cx)) * (m2 - m0); - h.y += (D/cx)*(m2.z); - h.z -= (D/cx)*(m2.y); } // y derivatives (along height) @@ -108,14 +112,16 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float A = aLUT2d[symidx(r0, r1)]; float D = DLUT2d[symidx(r0, r1)]; float D_2A = D/(2.0f*A); - if (is0(m1)) { - m1.x = m0.x + (-cy * D_2A * m0.z); - m1.y = m0.y; - m1.z = m0.z - (-cy * D_2A * m0.x); + if (!is0(m1) || !OpenBC){ + if (is0(m1)) { + m1.x = m0.x + (-cy * D_2A * m0.z); + m1.y = m0.y; + m1.z = m0.z - (-cy * D_2A * m0.x); + } + h += (2.0f*A/(cy*cy)) * (m1 - m0); + h.x -= (D/cy)*(-m1.z); + h.z += (D/cy)*(-m1.x); } - h += (2.0f*A/(cy*cy)) * (m1 - m0); - h.x -= (D/cy)*(-m1.z); - h.z += (D/cy)*(-m1.x); } { @@ -128,14 +134,16 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float A = aLUT2d[symidx(r0, r1)]; float D = DLUT2d[symidx(r0, r1)]; float D_2A = D/(2.0f*A); - if (is0(m2)) { - m2.x = m0.x + (+cy * D_2A * m0.z); - m2.y = m0.y; - m2.z = m0.z - (+cy * D_2A * m0.x); + if (!is0(m2) || !OpenBC){ + if (is0(m2)) { + m2.x = m0.x + (+cy * D_2A * m0.z); + m2.y = m0.y; + m2.z = m0.z - (+cy * D_2A * m0.x); + } + h += (2.0f*A/(cy*cy)) * (m2 - m0); + h.x -= (D/cy)*(m2.z); + h.z += (D/cy)*(m2.x); } - h += (2.0f*A/(cy*cy)) * (m2 - m0); - h.x -= (D/cy)*(m2.z); - h.z += (D/cy)*(m2.x); } // only take vertical derivative for 3D sim @@ -151,14 +159,16 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float A = aLUT2d[symidx(r0, r1)]; float D = DLUT2d[symidx(r0, r1)]; float D_2A = D/(2.0f*A); - if (is0(m1)) { - m1.x = m0.x - (-cz * D_2A * m0.y); - m1.y = m0.y + (-cz * D_2A * m0.x); - m1.z = m0.z; + if (!is0(m1) || !OpenBC){ + if (is0(m1)) { + m1.x = m0.x - (-cz * D_2A * m0.y); + m1.y = m0.y + (-cz * D_2A * m0.x); + m1.z = m0.z; + } + h += (2.0f*A/(cz*cz)) * (m1 - m0); + h.x += (D/cz)*(- m1.y); + h.y -= (D/cz)*(- m1.x); } - h += (2.0f*A/(cz*cz)) * (m1 - m0); - h.x += (D/cz)*(- m1.y); - h.y -= (D/cz)*(- m1.x); } // top neighbor @@ -172,14 +182,16 @@ adddmibulk(float* __restrict__ Hx, float* __restrict__ Hy, float* __restrict__ H float A = aLUT2d[symidx(r0, r1)]; float D = DLUT2d[symidx(r0, r1)]; float D_2A = D/(2.0f*A); - if (is0(m2)) { - m2.x = m0.x - (+cz * D_2A * m0.y); - m2.y = m0.y + (+cz * D_2A * m0.x); - m2.z = m0.z; + if (!is0(m2) || !OpenBC){ + if (is0(m2)) { + m2.x = m0.x - (+cz * D_2A * m0.y); + m2.y = m0.y + (+cz * D_2A * m0.x); + m2.z = m0.z; + } + h += (2.0f*A/(cz*cz)) * (m2 - m0); + h.x += (D/cz)*(m2.y ); + h.y -= (D/cz)*(m2.x ); } - h += (2.0f*A/(cz*cz)) * (m2 - m0); - h.x += (D/cz)*(m2.y ); - h.y -= (D/cz)*(m2.x ); } } diff --git a/cuda/dmibulk.go b/cuda/dmibulk.go index 4800f0242..251acb199 100644 --- a/cuda/dmibulk.go +++ b/cuda/dmibulk.go @@ -9,15 +9,19 @@ import ( // Add effective field due to bulk Dzyaloshinskii-Moriya interaction to Beff. // See dmibulk.cu -func AddDMIBulk(Beff *data.Slice, m *data.Slice, Aex_red, D_red SymmLUT, Msat MSlice, regions *Bytes, mesh *data.Mesh) { +func AddDMIBulk(Beff *data.Slice, m *data.Slice, Aex_red, D_red SymmLUT, Msat MSlice, regions *Bytes, mesh *data.Mesh, OpenBC bool) { cellsize := mesh.CellSize() N := Beff.Size() util.Argument(m.Size() == N) cfg := make3DConf(N) + var openBC byte + if OpenBC { + openBC = 1 + } k_adddmibulk_async(Beff.DevPtr(X), Beff.DevPtr(Y), Beff.DevPtr(Z), m.DevPtr(X), m.DevPtr(Y), m.DevPtr(Z), Msat.DevPtr(0), Msat.Mul(0), unsafe.Pointer(Aex_red), unsafe.Pointer(D_red), regions.Ptr, - float32(cellsize[X]), float32(cellsize[Y]), float32(cellsize[Z]), N[X], N[Y], N[Z], mesh.PBC_code(), cfg) + float32(cellsize[X]), float32(cellsize[Y]), float32(cellsize[Z]), N[X], N[Y], N[Z], mesh.PBC_code(), openBC, cfg) } diff --git a/cuda/dmibulk_20.ptx b/cuda/dmibulk_20.ptx deleted file mode 100644 index bd66f6d28..000000000 --- a/cuda/dmibulk_20.ptx +++ /dev/null @@ -1,813 +0,0 @@ -// -// Generated by NVIDIA NVVM Compiler -// -// Compiler Build ID: CL-21554848 -// Cuda compilation tools, release 8.0, V8.0.61 -// Based on LLVM 3.4svn -// - -.version 5.0 -.target sm_20 -.address_size 64 - - // .globl adddmibulk - -.visible .entry adddmibulk( - .param .u64 adddmibulk_param_0, - .param .u64 adddmibulk_param_1, - .param .u64 adddmibulk_param_2, - .param .u64 adddmibulk_param_3, - .param .u64 adddmibulk_param_4, - .param .u64 adddmibulk_param_5, - .param .u64 adddmibulk_param_6, - .param .f32 adddmibulk_param_7, - .param .u64 adddmibulk_param_8, - .param .u64 adddmibulk_param_9, - .param .u64 adddmibulk_param_10, - .param .f32 adddmibulk_param_11, - .param .f32 adddmibulk_param_12, - .param .f32 adddmibulk_param_13, - .param .u32 adddmibulk_param_14, - .param .u32 adddmibulk_param_15, - .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 -) -{ - .reg .pred %p<58>; - .reg .b16 %rs<62>; - .reg .f32 %f<256>; - .reg .b32 %r<324>; - .reg .b64 %rd<127>; - - - ld.param.u64 %rd1, [adddmibulk_param_0]; - ld.param.u64 %rd2, [adddmibulk_param_1]; - ld.param.u64 %rd3, [adddmibulk_param_2]; - ld.param.u64 %rd4, [adddmibulk_param_3]; - ld.param.u64 %rd5, [adddmibulk_param_4]; - ld.param.u64 %rd6, [adddmibulk_param_5]; - ld.param.u64 %rd7, [adddmibulk_param_6]; - ld.param.f32 %f254, [adddmibulk_param_7]; - ld.param.u64 %rd8, [adddmibulk_param_8]; - ld.param.u64 %rd9, [adddmibulk_param_9]; - ld.param.u64 %rd10, [adddmibulk_param_10]; - ld.param.f32 %f81, [adddmibulk_param_11]; - ld.param.f32 %f82, [adddmibulk_param_12]; - ld.param.f32 %f83, [adddmibulk_param_13]; - ld.param.u32 %r77, [adddmibulk_param_14]; - ld.param.u32 %r78, [adddmibulk_param_15]; - ld.param.u32 %r79, [adddmibulk_param_16]; - ld.param.u8 %rs16, [adddmibulk_param_17]; - mov.u32 %r80, %ntid.x; - mov.u32 %r81, %ctaid.x; - mov.u32 %r82, %tid.x; - mad.lo.s32 %r1, %r80, %r81, %r82; - mov.u32 %r83, %ntid.y; - mov.u32 %r84, %ctaid.y; - mov.u32 %r85, %tid.y; - mad.lo.s32 %r2, %r83, %r84, %r85; - mov.u32 %r86, %ntid.z; - mov.u32 %r87, %ctaid.z; - mov.u32 %r88, %tid.z; - mad.lo.s32 %r3, %r86, %r87, %r88; - setp.ge.s32 %p1, %r2, %r78; - setp.ge.s32 %p2, %r1, %r77; - or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r79; - or.pred %p5, %p3, %p4; - @%p5 bra BB0_87; - - cvta.to.global.u64 %rd11, %rd10; - cvta.to.global.u64 %rd12, %rd6; - cvta.to.global.u64 %rd13, %rd5; - cvta.to.global.u64 %rd14, %rd4; - mad.lo.s32 %r89, %r3, %r78, %r2; - mad.lo.s32 %r90, %r89, %r77, %r1; - cvt.s64.s32 %rd15, %r90; - mul.wide.s32 %rd16, %r90, 4; - add.s64 %rd17, %rd14, %rd16; - add.s64 %rd18, %rd13, %rd16; - add.s64 %rd19, %rd12, %rd16; - add.s64 %rd20, %rd11, %rd15; - ld.global.u8 %rs1, [%rd20]; - cvt.u32.u16 %r91, %rs1; - and.b32 %r4, %r91, 255; - ld.global.f32 %f1, [%rd17]; - ld.global.f32 %f2, [%rd18]; - mul.f32 %f84, %f2, %f2; - fma.rn.f32 %f85, %f1, %f1, %f84; - ld.global.f32 %f3, [%rd19]; - fma.rn.f32 %f86, %f3, %f3, %f85; - setp.eq.f32 %p6, %f86, 0f00000000; - @%p6 bra BB0_87; - - and.b16 %rs17, %rs16, 1; - setp.eq.b16 %p7, %rs17, 1; - add.s32 %r5, %r1, -1; - @!%p7 bra BB0_4; - bra.uni BB0_3; - -BB0_3: - rem.s32 %r96, %r5, %r77; - add.s32 %r97, %r96, %r77; - rem.s32 %r306, %r97, %r77; - bra.uni BB0_5; - -BB0_4: - mov.u32 %r98, 0; - max.s32 %r306, %r5, %r98; - -BB0_5: - mad.lo.s32 %r9, %r89, %r77, %r306; - setp.gt.s32 %p8, %r1, 0; - setp.eq.b16 %p9, %rs17, 1; - or.pred %p10, %p8, %p9; - mov.f32 %f235, 0f00000000; - mov.f32 %f234, %f235; - mov.f32 %f233, %f235; - @!%p10 bra BB0_7; - bra.uni BB0_6; - -BB0_6: - mul.wide.s32 %rd22, %r9, 4; - add.s64 %rd23, %rd14, %rd22; - ld.global.f32 %f233, [%rd23]; - add.s64 %rd25, %rd13, %rd22; - ld.global.f32 %f234, [%rd25]; - add.s64 %rd27, %rd12, %rd22; - ld.global.f32 %f235, [%rd27]; - -BB0_7: - mul.f32 %f90, %f234, %f234; - fma.rn.f32 %f91, %f233, %f233, %f90; - fma.rn.f32 %f10, %f235, %f235, %f91; - setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs61, %rs1; - @%p11 bra BB0_9; - - cvt.s64.s32 %rd28, %r9; - add.s64 %rd30, %rd11, %rd28; - ld.global.u8 %rs2, [%rd30]; - mov.u16 %rs61, %rs2; - -BB0_9: - mov.u16 %rs3, %rs61; - cvt.u32.u16 %r112, %rs3; - and.b32 %r10, %r112, 255; - setp.gt.u16 %p12, %rs3, %rs1; - @%p12 bra BB0_11; - bra.uni BB0_10; - -BB0_11: - add.s32 %r116, %r10, 1; - mul.lo.s32 %r117, %r116, %r10; - shr.u32 %r118, %r117, 1; - add.s32 %r307, %r118, %r4; - bra.uni BB0_12; - -BB0_10: - add.s32 %r113, %r4, 1; - mul.lo.s32 %r114, %r113, %r4; - shr.u32 %r115, %r114, 1; - add.s32 %r307, %r10, %r115; - -BB0_12: - cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r307, 4; - add.s64 %rd33, %rd31, %rd32; - ld.global.f32 %f11, [%rd33]; - @%p12 bra BB0_14; - bra.uni BB0_13; - -BB0_14: - add.s32 %r122, %r10, 1; - mul.lo.s32 %r123, %r122, %r10; - shr.u32 %r124, %r123, 1; - add.s32 %r308, %r124, %r4; - bra.uni BB0_15; - -BB0_13: - add.s32 %r119, %r4, 1; - mul.lo.s32 %r120, %r119, %r4; - shr.u32 %r121, %r120, 1; - add.s32 %r308, %r10, %r121; - -BB0_15: - setp.eq.b16 %p14, %rs17, 1; - cvta.to.global.u64 %rd34, %rd9; - mul.wide.s32 %rd35, %r308, 4; - add.s64 %rd36, %rd34, %rd35; - add.f32 %f92, %f11, %f11; - ld.global.f32 %f93, [%rd36]; - div.rn.f32 %f94, %f93, %f92; - mul.f32 %f95, %f94, %f81; - fma.rn.f32 %f96, %f3, %f95, %f2; - mul.f32 %f97, %f2, %f95; - sub.f32 %f98, %f3, %f97; - selp.f32 %f99, %f1, %f233, %p11; - selp.f32 %f100, %f96, %f234, %p11; - selp.f32 %f101, %f98, %f235, %p11; - mul.f32 %f12, %f81, %f81; - div.rn.f32 %f102, %f92, %f12; - sub.f32 %f103, %f99, %f1; - sub.f32 %f104, %f100, %f2; - sub.f32 %f105, %f101, %f3; - fma.rn.f32 %f13, %f103, %f102, 0f00000000; - fma.rn.f32 %f106, %f102, %f104, 0f00000000; - fma.rn.f32 %f107, %f102, %f105, 0f00000000; - div.rn.f32 %f108, %f93, %f81; - mul.f32 %f109, %f108, %f101; - sub.f32 %f14, %f106, %f109; - fma.rn.f32 %f15, %f108, %f100, %f107; - add.s32 %r17, %r1, 1; - @!%p14 bra BB0_17; - bra.uni BB0_16; - -BB0_16: - rem.s32 %r129, %r17, %r77; - add.s32 %r130, %r129, %r77; - rem.s32 %r309, %r130, %r77; - bra.uni BB0_18; - -BB0_17: - add.s32 %r131, %r77, -1; - min.s32 %r309, %r17, %r131; - -BB0_18: - setp.eq.b16 %p16, %rs17, 1; - mad.lo.s32 %r21, %r89, %r77, %r309; - setp.lt.s32 %p17, %r17, %r77; - or.pred %p18, %p17, %p16; - mov.f32 %f238, 0f00000000; - mov.f32 %f237, %f238; - mov.f32 %f236, %f238; - @!%p18 bra BB0_20; - bra.uni BB0_19; - -BB0_19: - mul.wide.s32 %rd38, %r21, 4; - add.s64 %rd39, %rd14, %rd38; - ld.global.f32 %f236, [%rd39]; - add.s64 %rd41, %rd13, %rd38; - ld.global.f32 %f237, [%rd41]; - add.s64 %rd43, %rd12, %rd38; - ld.global.f32 %f238, [%rd43]; - -BB0_20: - mul.f32 %f113, %f237, %f237; - fma.rn.f32 %f114, %f236, %f236, %f113; - fma.rn.f32 %f22, %f238, %f238, %f114; - setp.eq.f32 %p19, %f22, 0f00000000; - mov.u16 %rs60, %rs1; - @%p19 bra BB0_22; - - cvt.s64.s32 %rd44, %r21; - add.s64 %rd46, %rd11, %rd44; - ld.global.u8 %rs60, [%rd46]; - -BB0_22: - cvt.u32.u16 %r141, %rs60; - and.b32 %r22, %r141, 255; - setp.gt.u16 %p20, %rs60, %rs1; - @%p20 bra BB0_24; - bra.uni BB0_23; - -BB0_24: - add.s32 %r145, %r22, 1; - mul.lo.s32 %r146, %r145, %r22; - shr.u32 %r147, %r146, 1; - add.s32 %r310, %r147, %r4; - bra.uni BB0_25; - -BB0_23: - add.s32 %r142, %r4, 1; - mul.lo.s32 %r143, %r142, %r4; - shr.u32 %r144, %r143, 1; - add.s32 %r310, %r22, %r144; - -BB0_25: - mul.wide.s32 %rd48, %r310, 4; - add.s64 %rd49, %rd31, %rd48; - ld.global.f32 %f23, [%rd49]; - @%p20 bra BB0_27; - bra.uni BB0_26; - -BB0_27: - add.s32 %r151, %r22, 1; - mul.lo.s32 %r152, %r151, %r22; - shr.u32 %r153, %r152, 1; - add.s32 %r311, %r153, %r4; - bra.uni BB0_28; - -BB0_26: - add.s32 %r148, %r4, 1; - mul.lo.s32 %r149, %r148, %r4; - shr.u32 %r150, %r149, 1; - add.s32 %r311, %r22, %r150; - -BB0_28: - mul.wide.s32 %rd51, %r311, 4; - add.s64 %rd52, %rd34, %rd51; - add.f32 %f115, %f23, %f23; - ld.global.f32 %f116, [%rd52]; - div.rn.f32 %f117, %f116, %f115; - mul.f32 %f118, %f117, %f81; - mul.f32 %f119, %f3, %f118; - sub.f32 %f120, %f2, %f119; - fma.rn.f32 %f121, %f2, %f118, %f3; - selp.f32 %f122, %f1, %f236, %p19; - selp.f32 %f123, %f120, %f237, %p19; - selp.f32 %f124, %f121, %f238, %p19; - div.rn.f32 %f125, %f115, %f12; - sub.f32 %f126, %f122, %f1; - sub.f32 %f127, %f123, %f2; - sub.f32 %f128, %f124, %f3; - fma.rn.f32 %f24, %f126, %f125, %f13; - fma.rn.f32 %f129, %f125, %f127, %f14; - fma.rn.f32 %f130, %f125, %f128, %f15; - div.rn.f32 %f131, %f116, %f81; - fma.rn.f32 %f25, %f131, %f124, %f129; - mul.f32 %f132, %f131, %f123; - sub.f32 %f26, %f130, %f132; - and.b16 %rs6, %rs16, 2; - setp.eq.s16 %p23, %rs6, 0; - add.s32 %r29, %r2, -1; - @%p23 bra BB0_30; - - rem.s32 %r158, %r29, %r78; - add.s32 %r159, %r158, %r78; - rem.s32 %r312, %r159, %r78; - bra.uni BB0_31; - -BB0_30: - mov.u32 %r160, 0; - max.s32 %r312, %r29, %r160; - -BB0_31: - mad.lo.s32 %r165, %r3, %r78, %r312; - mad.lo.s32 %r33, %r165, %r77, %r1; - setp.gt.s32 %p24, %r2, 0; - setp.ne.s16 %p25, %rs6, 0; - or.pred %p26, %p24, %p25; - mov.f32 %f241, 0f00000000; - mov.f32 %f240, %f241; - mov.f32 %f239, %f241; - @!%p26 bra BB0_33; - bra.uni BB0_32; - -BB0_32: - mul.wide.s32 %rd54, %r33, 4; - add.s64 %rd55, %rd14, %rd54; - ld.global.f32 %f239, [%rd55]; - add.s64 %rd57, %rd13, %rd54; - ld.global.f32 %f240, [%rd57]; - add.s64 %rd59, %rd12, %rd54; - ld.global.f32 %f241, [%rd59]; - -BB0_33: - mul.f32 %f136, %f240, %f240; - fma.rn.f32 %f137, %f239, %f239, %f136; - fma.rn.f32 %f33, %f241, %f241, %f137; - setp.eq.f32 %p27, %f33, 0f00000000; - mov.u16 %rs59, %rs1; - @%p27 bra BB0_35; - - cvt.s64.s32 %rd60, %r33; - add.s64 %rd62, %rd11, %rd60; - ld.global.u8 %rs59, [%rd62]; - -BB0_35: - cvt.u32.u16 %r174, %rs59; - and.b32 %r34, %r174, 255; - setp.gt.u16 %p28, %rs59, %rs1; - @%p28 bra BB0_37; - bra.uni BB0_36; - -BB0_37: - add.s32 %r178, %r34, 1; - mul.lo.s32 %r179, %r178, %r34; - shr.u32 %r180, %r179, 1; - add.s32 %r313, %r180, %r4; - bra.uni BB0_38; - -BB0_36: - add.s32 %r175, %r4, 1; - mul.lo.s32 %r176, %r175, %r4; - shr.u32 %r177, %r176, 1; - add.s32 %r313, %r34, %r177; - -BB0_38: - mul.wide.s32 %rd64, %r313, 4; - add.s64 %rd65, %rd31, %rd64; - ld.global.f32 %f34, [%rd65]; - @%p28 bra BB0_40; - bra.uni BB0_39; - -BB0_40: - add.s32 %r184, %r34, 1; - mul.lo.s32 %r185, %r184, %r34; - shr.u32 %r186, %r185, 1; - add.s32 %r314, %r186, %r4; - bra.uni BB0_41; - -BB0_39: - add.s32 %r181, %r4, 1; - mul.lo.s32 %r182, %r181, %r4; - shr.u32 %r183, %r182, 1; - add.s32 %r314, %r34, %r183; - -BB0_41: - mul.wide.s32 %rd67, %r314, 4; - add.s64 %rd68, %rd34, %rd67; - add.f32 %f138, %f34, %f34; - ld.global.f32 %f139, [%rd68]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f82; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f145, %f143, %f239, %p27; - selp.f32 %f146, %f2, %f240, %p27; - selp.f32 %f147, %f144, %f241, %p27; - mul.f32 %f35, %f82, %f82; - div.rn.f32 %f148, %f138, %f35; - sub.f32 %f149, %f145, %f1; - sub.f32 %f150, %f146, %f2; - sub.f32 %f151, %f147, %f3; - fma.rn.f32 %f152, %f148, %f149, %f24; - fma.rn.f32 %f36, %f150, %f148, %f25; - fma.rn.f32 %f153, %f148, %f151, %f26; - div.rn.f32 %f154, %f139, %f82; - fma.rn.f32 %f37, %f154, %f147, %f152; - mul.f32 %f155, %f154, %f145; - sub.f32 %f38, %f153, %f155; - add.s32 %r41, %r2, 1; - @%p23 bra BB0_43; - - rem.s32 %r191, %r41, %r78; - add.s32 %r192, %r191, %r78; - rem.s32 %r315, %r192, %r78; - bra.uni BB0_44; - -BB0_43: - add.s32 %r193, %r78, -1; - min.s32 %r315, %r41, %r193; - -BB0_44: - mad.lo.s32 %r198, %r3, %r78, %r315; - mad.lo.s32 %r45, %r198, %r77, %r1; - setp.lt.s32 %p32, %r41, %r78; - or.pred %p34, %p32, %p25; - mov.f32 %f244, 0f00000000; - mov.f32 %f243, %f244; - mov.f32 %f242, %f244; - @!%p34 bra BB0_46; - bra.uni BB0_45; - -BB0_45: - mul.wide.s32 %rd70, %r45, 4; - add.s64 %rd71, %rd14, %rd70; - ld.global.f32 %f242, [%rd71]; - add.s64 %rd73, %rd13, %rd70; - ld.global.f32 %f243, [%rd73]; - add.s64 %rd75, %rd12, %rd70; - ld.global.f32 %f244, [%rd75]; - -BB0_46: - mul.f32 %f159, %f243, %f243; - fma.rn.f32 %f160, %f242, %f242, %f159; - fma.rn.f32 %f45, %f244, %f244, %f160; - setp.eq.f32 %p35, %f45, 0f00000000; - mov.u16 %rs58, %rs1; - @%p35 bra BB0_48; - - cvt.s64.s32 %rd76, %r45; - add.s64 %rd78, %rd11, %rd76; - ld.global.u8 %rs58, [%rd78]; - -BB0_48: - cvt.u32.u16 %r203, %rs58; - and.b32 %r46, %r203, 255; - setp.gt.u16 %p36, %rs58, %rs1; - @%p36 bra BB0_50; - bra.uni BB0_49; - -BB0_50: - add.s32 %r207, %r46, 1; - mul.lo.s32 %r208, %r207, %r46; - shr.u32 %r209, %r208, 1; - add.s32 %r316, %r209, %r4; - bra.uni BB0_51; - -BB0_49: - add.s32 %r204, %r4, 1; - mul.lo.s32 %r205, %r204, %r4; - shr.u32 %r206, %r205, 1; - add.s32 %r316, %r46, %r206; - -BB0_51: - mul.wide.s32 %rd80, %r316, 4; - add.s64 %rd81, %rd31, %rd80; - ld.global.f32 %f46, [%rd81]; - @%p36 bra BB0_53; - bra.uni BB0_52; - -BB0_53: - add.s32 %r213, %r46, 1; - mul.lo.s32 %r214, %r213, %r46; - shr.u32 %r215, %r214, 1; - add.s32 %r317, %r215, %r4; - bra.uni BB0_54; - -BB0_52: - add.s32 %r210, %r4, 1; - mul.lo.s32 %r211, %r210, %r4; - shr.u32 %r212, %r211, 1; - add.s32 %r317, %r46, %r212; - -BB0_54: - mul.wide.s32 %rd83, %r317, 4; - add.s64 %rd84, %rd34, %rd83; - add.f32 %f161, %f46, %f46; - ld.global.f32 %f162, [%rd84]; - div.rn.f32 %f163, %f162, %f161; - mul.f32 %f164, %f163, %f82; - fma.rn.f32 %f165, %f3, %f164, %f1; - mul.f32 %f166, %f1, %f164; - sub.f32 %f167, %f3, %f166; - selp.f32 %f168, %f165, %f242, %p35; - selp.f32 %f169, %f2, %f243, %p35; - selp.f32 %f170, %f167, %f244, %p35; - div.rn.f32 %f171, %f161, %f35; - sub.f32 %f172, %f168, %f1; - sub.f32 %f173, %f169, %f2; - sub.f32 %f174, %f170, %f3; - fma.rn.f32 %f175, %f171, %f172, %f37; - fma.rn.f32 %f252, %f173, %f171, %f36; - fma.rn.f32 %f176, %f171, %f174, %f38; - div.rn.f32 %f177, %f162, %f82; - mul.f32 %f178, %f177, %f170; - sub.f32 %f251, %f175, %f178; - fma.rn.f32 %f253, %f177, %f168, %f176; - setp.eq.s32 %p39, %r79, 1; - @%p39 bra BB0_82; - - and.b16 %rs11, %rs16, 4; - setp.eq.s16 %p40, %rs11, 0; - add.s32 %r53, %r3, -1; - @%p40 bra BB0_57; - - rem.s32 %r220, %r53, %r79; - add.s32 %r221, %r220, %r79; - rem.s32 %r318, %r221, %r79; - bra.uni BB0_58; - -BB0_57: - mov.u32 %r222, 0; - max.s32 %r318, %r53, %r222; - -BB0_58: - mad.lo.s32 %r227, %r318, %r78, %r2; - mad.lo.s32 %r57, %r227, %r77, %r1; - setp.gt.s32 %p41, %r3, 0; - setp.ne.s16 %p42, %rs11, 0; - or.pred %p43, %p41, %p42; - mov.f32 %f247, 0f00000000; - mov.f32 %f246, %f247; - mov.f32 %f245, %f247; - @!%p43 bra BB0_60; - bra.uni BB0_59; - -BB0_59: - mul.wide.s32 %rd86, %r57, 4; - add.s64 %rd87, %rd14, %rd86; - ld.global.f32 %f245, [%rd87]; - add.s64 %rd89, %rd13, %rd86; - ld.global.f32 %f246, [%rd89]; - add.s64 %rd91, %rd12, %rd86; - ld.global.f32 %f247, [%rd91]; - -BB0_60: - mul.f32 %f182, %f246, %f246; - fma.rn.f32 %f183, %f245, %f245, %f182; - fma.rn.f32 %f56, %f247, %f247, %f183; - setp.eq.f32 %p44, %f56, 0f00000000; - mov.u16 %rs57, %rs1; - @%p44 bra BB0_62; - - cvt.s64.s32 %rd92, %r57; - add.s64 %rd94, %rd11, %rd92; - ld.global.u8 %rs57, [%rd94]; - -BB0_62: - cvt.u32.u16 %r236, %rs57; - and.b32 %r58, %r236, 255; - setp.gt.u16 %p45, %rs57, %rs1; - @%p45 bra BB0_64; - bra.uni BB0_63; - -BB0_64: - add.s32 %r240, %r58, 1; - mul.lo.s32 %r241, %r240, %r58; - shr.u32 %r242, %r241, 1; - add.s32 %r319, %r242, %r4; - bra.uni BB0_65; - -BB0_63: - add.s32 %r237, %r4, 1; - mul.lo.s32 %r238, %r237, %r4; - shr.u32 %r239, %r238, 1; - add.s32 %r319, %r58, %r239; - -BB0_65: - mul.wide.s32 %rd96, %r319, 4; - add.s64 %rd97, %rd31, %rd96; - ld.global.f32 %f57, [%rd97]; - @%p45 bra BB0_67; - bra.uni BB0_66; - -BB0_67: - add.s32 %r246, %r58, 1; - mul.lo.s32 %r247, %r246, %r58; - shr.u32 %r248, %r247, 1; - add.s32 %r320, %r248, %r4; - bra.uni BB0_68; - -BB0_66: - add.s32 %r243, %r4, 1; - mul.lo.s32 %r244, %r243, %r4; - shr.u32 %r245, %r244, 1; - add.s32 %r320, %r58, %r245; - -BB0_68: - mul.wide.s32 %rd99, %r320, 4; - add.s64 %rd100, %rd34, %rd99; - add.f32 %f184, %f57, %f57; - ld.global.f32 %f185, [%rd100]; - div.rn.f32 %f186, %f185, %f184; - mul.f32 %f187, %f186, %f83; - fma.rn.f32 %f188, %f2, %f187, %f1; - mul.f32 %f189, %f1, %f187; - sub.f32 %f190, %f2, %f189; - selp.f32 %f191, %f188, %f245, %p44; - selp.f32 %f192, %f190, %f246, %p44; - selp.f32 %f193, %f3, %f247, %p44; - mul.f32 %f58, %f83, %f83; - div.rn.f32 %f194, %f184, %f58; - sub.f32 %f195, %f191, %f1; - sub.f32 %f196, %f192, %f2; - sub.f32 %f197, %f193, %f3; - fma.rn.f32 %f198, %f194, %f195, %f251; - fma.rn.f32 %f199, %f194, %f196, %f252; - fma.rn.f32 %f59, %f197, %f194, %f253; - div.rn.f32 %f200, %f185, %f83; - mul.f32 %f201, %f200, %f192; - sub.f32 %f60, %f198, %f201; - fma.rn.f32 %f61, %f200, %f191, %f199; - add.s32 %r65, %r3, 1; - @%p40 bra BB0_70; - - rem.s32 %r253, %r65, %r79; - add.s32 %r254, %r253, %r79; - rem.s32 %r321, %r254, %r79; - bra.uni BB0_71; - -BB0_70: - add.s32 %r255, %r79, -1; - min.s32 %r321, %r65, %r255; - -BB0_71: - mad.lo.s32 %r260, %r321, %r78, %r2; - mad.lo.s32 %r69, %r260, %r77, %r1; - setp.lt.s32 %p49, %r65, %r79; - or.pred %p51, %p49, %p42; - mov.f32 %f250, 0f00000000; - mov.f32 %f249, %f250; - mov.f32 %f248, %f250; - @!%p51 bra BB0_73; - bra.uni BB0_72; - -BB0_72: - mul.wide.s32 %rd102, %r69, 4; - add.s64 %rd103, %rd14, %rd102; - ld.global.f32 %f250, [%rd103]; - add.s64 %rd105, %rd13, %rd102; - ld.global.f32 %f249, [%rd105]; - add.s64 %rd107, %rd12, %rd102; - ld.global.f32 %f248, [%rd107]; - -BB0_73: - mul.f32 %f205, %f250, %f250; - fma.rn.f32 %f206, %f249, %f249, %f205; - fma.rn.f32 %f68, %f248, %f248, %f206; - setp.eq.f32 %p52, %f68, 0f00000000; - mov.u16 %rs56, %rs1; - @%p52 bra BB0_75; - - cvt.s64.s32 %rd108, %r69; - add.s64 %rd110, %rd11, %rd108; - ld.global.u8 %rs56, [%rd110]; - -BB0_75: - cvt.u32.u16 %r265, %rs56; - and.b32 %r70, %r265, 255; - setp.gt.u16 %p53, %rs56, %rs1; - @%p53 bra BB0_77; - bra.uni BB0_76; - -BB0_77: - add.s32 %r269, %r70, 1; - mul.lo.s32 %r270, %r269, %r70; - shr.u32 %r271, %r270, 1; - add.s32 %r322, %r271, %r4; - bra.uni BB0_78; - -BB0_76: - add.s32 %r266, %r4, 1; - mul.lo.s32 %r267, %r266, %r4; - shr.u32 %r268, %r267, 1; - add.s32 %r322, %r70, %r268; - -BB0_78: - mul.wide.s32 %rd112, %r322, 4; - add.s64 %rd113, %rd31, %rd112; - ld.global.f32 %f69, [%rd113]; - @%p53 bra BB0_80; - bra.uni BB0_79; - -BB0_80: - add.s32 %r275, %r70, 1; - mul.lo.s32 %r276, %r275, %r70; - shr.u32 %r277, %r276, 1; - add.s32 %r323, %r277, %r4; - bra.uni BB0_81; - -BB0_79: - add.s32 %r272, %r4, 1; - mul.lo.s32 %r273, %r272, %r4; - shr.u32 %r274, %r273, 1; - add.s32 %r323, %r70, %r274; - -BB0_81: - mul.wide.s32 %rd115, %r323, 4; - add.s64 %rd116, %rd34, %rd115; - add.f32 %f207, %f69, %f69; - ld.global.f32 %f208, [%rd116]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f83; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f248, %p52; - selp.f32 %f215, %f213, %f249, %p52; - selp.f32 %f216, %f212, %f250, %p52; - div.rn.f32 %f217, %f207, %f58; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f60; - fma.rn.f32 %f222, %f217, %f219, %f61; - fma.rn.f32 %f253, %f220, %f217, %f59; - div.rn.f32 %f223, %f208, %f83; - fma.rn.f32 %f251, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f252, %f222, %f224; - -BB0_82: - setp.eq.s64 %p56, %rd7, 0; - @%p56 bra BB0_84; - - cvta.to.global.u64 %rd117, %rd7; - add.s64 %rd119, %rd117, %rd16; - ld.global.f32 %f225, [%rd119]; - mul.f32 %f254, %f225, %f254; - -BB0_84: - setp.eq.f32 %p57, %f254, 0f00000000; - mov.f32 %f255, 0f00000000; - @%p57 bra BB0_86; - - rcp.rn.f32 %f255, %f254; - -BB0_86: - cvta.to.global.u64 %rd120, %rd1; - add.s64 %rd122, %rd120, %rd16; - ld.global.f32 %f227, [%rd122]; - fma.rn.f32 %f228, %f251, %f255, %f227; - st.global.f32 [%rd122], %f228; - cvta.to.global.u64 %rd123, %rd2; - add.s64 %rd124, %rd123, %rd16; - ld.global.f32 %f229, [%rd124]; - fma.rn.f32 %f230, %f252, %f255, %f229; - st.global.f32 [%rd124], %f230; - cvta.to.global.u64 %rd125, %rd3; - add.s64 %rd126, %rd125, %rd16; - ld.global.f32 %f231, [%rd126]; - fma.rn.f32 %f232, %f253, %f255, %f231; - st.global.f32 [%rd126], %f232; - -BB0_87: - ret; -} - - diff --git a/cuda/dmibulk_30.ptx b/cuda/dmibulk_30.ptx index f8f9d7452..94c5158d9 100644 --- a/cuda/dmibulk_30.ptx +++ b/cuda/dmibulk_30.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_30 .address_size 64 @@ -30,33 +30,35 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; + .reg .pred %p<71>; .reg .b16 %rs<47>; - .reg .f32 %f<257>; + .reg .f32 %f<292>; .reg .b32 %r<238>; .reg .b64 %rd<121>; - ld.param.u64 %rd1, [adddmibulk_param_0]; - ld.param.u64 %rd2, [adddmibulk_param_1]; - ld.param.u64 %rd3, [adddmibulk_param_2]; - ld.param.u64 %rd4, [adddmibulk_param_3]; - ld.param.u64 %rd5, [adddmibulk_param_4]; - ld.param.u64 %rd6, [adddmibulk_param_5]; - ld.param.u64 %rd7, [adddmibulk_param_6]; - ld.param.f32 %f255, [adddmibulk_param_7]; - ld.param.u64 %rd8, [adddmibulk_param_8]; - ld.param.u64 %rd9, [adddmibulk_param_9]; - ld.param.u64 %rd10, [adddmibulk_param_10]; - ld.param.f32 %f75, [adddmibulk_param_11]; - ld.param.f32 %f76, [adddmibulk_param_12]; - ld.param.f32 %f77, [adddmibulk_param_13]; + ld.param.u64 %rd13, [adddmibulk_param_0]; + ld.param.u64 %rd14, [adddmibulk_param_1]; + ld.param.u64 %rd15, [adddmibulk_param_2]; + ld.param.u64 %rd16, [adddmibulk_param_3]; + ld.param.u64 %rd17, [adddmibulk_param_4]; + ld.param.u64 %rd18, [adddmibulk_param_5]; + ld.param.u64 %rd19, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd20, [adddmibulk_param_8]; + ld.param.u64 %rd21, [adddmibulk_param_9]; + ld.param.u64 %rd22, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; ld.param.u32 %r34, [adddmibulk_param_14]; ld.param.u32 %r35, [adddmibulk_param_15]; ld.param.u32 %r36, [adddmibulk_param_16]; + ld.param.u8 %rs17, [adddmibulk_param_18]; ld.param.u8 %rs16, [adddmibulk_param_17]; mov.u32 %r37, %ntid.x; mov.u32 %r38, %ctaid.x; @@ -75,32 +77,32 @@ or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r36; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - cvta.to.global.u64 %rd11, %rd10; - cvta.to.global.u64 %rd12, %rd6; - cvta.to.global.u64 %rd13, %rd5; - cvta.to.global.u64 %rd14, %rd4; + cvta.to.global.u64 %rd23, %rd22; + cvta.to.global.u64 %rd24, %rd18; + cvta.to.global.u64 %rd25, %rd17; + cvta.to.global.u64 %rd26, %rd16; mad.lo.s32 %r46, %r3, %r35, %r2; mad.lo.s32 %r47, %r46, %r34, %r1; - mul.wide.s32 %rd15, %r47, 4; - add.s64 %rd16, %rd14, %rd15; - cvt.s64.s32 %rd17, %r47; - add.s64 %rd18, %rd13, %rd15; - add.s64 %rd19, %rd12, %rd15; - add.s64 %rd20, %rd11, %rd17; - ld.global.u8 %rs1, [%rd20]; - ld.global.f32 %f1, [%rd16]; - ld.global.f32 %f2, [%rd18]; - mul.f32 %f78, %f2, %f2; - fma.rn.f32 %f79, %f1, %f1, %f78; - ld.global.f32 %f3, [%rd19]; - fma.rn.f32 %f80, %f3, %f3, %f79; - setp.eq.f32 %p6, %f80, 0f00000000; - @%p6 bra BB0_51; - - and.b16 %rs17, %rs16, 1; - setp.eq.b16 %p7, %rs17, 1; + mul.wide.s32 %rd27, %r47, 4; + add.s64 %rd28, %rd26, %rd27; + cvt.s64.s32 %rd29, %r47; + add.s64 %rd30, %rd25, %rd27; + add.s64 %rd31, %rd24, %rd27; + add.s64 %rd32, %rd23, %rd29; + ld.global.u8 %rs1, [%rd32]; + ld.global.f32 %f1, [%rd28]; + ld.global.f32 %f2, [%rd30]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.f32 %f3, [%rd31]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; + + and.b16 %rs18, %rs16, 1; + setp.eq.b16 %p7, %rs18, 1; add.s32 %r4, %r1, -1; @!%p7 bra BB0_4; bra.uni BB0_3; @@ -117,513 +119,549 @@ BB0_4: BB0_5: mad.lo.s32 %r8, %r46, %r34, %r232; - setp.eq.b16 %p8, %rs17, 1; + setp.eq.b16 %p8, %rs18, 1; setp.gt.s32 %p9, %r4, -1; or.pred %p10, %p9, %p8; - mov.f32 %f234, 0f00000000; - mov.f32 %f235, %f234; - mov.f32 %f236, %f234; + mov.f32 %f254, 0f00000000; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @!%p10 bra BB0_7; bra.uni BB0_6; BB0_6: - mul.wide.s32 %rd22, %r8, 4; - add.s64 %rd23, %rd14, %rd22; - ld.global.f32 %f234, [%rd23]; - add.s64 %rd25, %rd13, %rd22; - ld.global.f32 %f235, [%rd25]; - add.s64 %rd27, %rd12, %rd22; - ld.global.f32 %f236, [%rd27]; + mul.wide.s32 %rd34, %r8, 4; + add.s64 %rd35, %rd26, %rd34; + ld.global.f32 %f254, [%rd35]; + add.s64 %rd37, %rd25, %rd34; + ld.global.f32 %f255, [%rd37]; + add.s64 %rd39, %rd24, %rd34; + ld.global.f32 %f256, [%rd39]; BB0_7: - mul.f32 %f84, %f235, %f235; - fma.rn.f32 %f85, %f234, %f234, %f84; - fma.rn.f32 %f10, %f236, %f236, %f85; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; mov.u16 %rs41, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd29, %r8; - add.s64 %rd30, %rd11, %rd29; - ld.global.u8 %rs41, [%rd30]; + cvt.s64.s32 %rd41, %r8; + add.s64 %rd42, %rd23, %rd41; + ld.global.u8 %rs41, [%rd42]; BB0_9: - setp.eq.b16 %p12, %rs17, 1; cvt.u32.u16 %r64, %rs1; and.b32 %r65, %r64, 255; - setp.gt.u16 %p13, %rs41, %rs1; + setp.gt.u16 %p12, %rs41, %rs1; cvt.u32.u16 %r66, %rs41; and.b32 %r67, %r66, 255; - selp.b32 %r68, %r65, %r67, %p13; - selp.b32 %r69, %r67, %r65, %p13; + selp.b32 %r68, %r65, %r67, %p12; + selp.b32 %r69, %r67, %r65, %p12; add.s32 %r70, %r69, 1; mul.lo.s32 %r71, %r70, %r69; shr.u32 %r72, %r71, 1; add.s32 %r73, %r72, %r68; - cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r73, 4; - add.s64 %rd33, %rd31, %rd32; - cvta.to.global.u64 %rd34, %rd9; - add.s64 %rd35, %rd34, %rd32; - ld.global.f32 %f86, [%rd33]; - add.f32 %f87, %f86, %f86; - ld.global.f32 %f88, [%rd35]; - div.rn.f32 %f89, %f88, %f87; - mul.f32 %f90, %f89, %f75; - fma.rn.f32 %f91, %f3, %f90, %f2; - mul.f32 %f92, %f2, %f90; - sub.f32 %f93, %f3, %f92; - selp.f32 %f94, %f1, %f234, %p11; - selp.f32 %f95, %f91, %f235, %p11; - selp.f32 %f96, %f93, %f236, %p11; - mul.f32 %f11, %f75, %f75; - div.rn.f32 %f97, %f87, %f11; - sub.f32 %f98, %f94, %f1; - sub.f32 %f99, %f95, %f2; - sub.f32 %f100, %f96, %f3; - fma.rn.f32 %f12, %f98, %f97, 0f00000000; - fma.rn.f32 %f101, %f97, %f99, 0f00000000; - fma.rn.f32 %f102, %f97, %f100, 0f00000000; - div.rn.f32 %f103, %f88, %f75; - mul.f32 %f104, %f103, %f96; - sub.f32 %f13, %f101, %f104; - fma.rn.f32 %f14, %f103, %f95, %f102; + cvta.to.global.u64 %rd43, %rd20; + mul.wide.s32 %rd44, %r73, 4; + add.s64 %rd1, %rd43, %rd44; + cvta.to.global.u64 %rd45, %rd21; + add.s64 %rd2, %rd45, %rd44; + setp.ne.s16 %p13, %rs17, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + ld.global.f32 %f101, [%rd1]; + add.f32 %f102, %f101, %f101; + ld.global.f32 %f103, [%rd2]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; + +BB0_11: + setp.eq.b16 %p17, %rs18, 1; add.s32 %r9, %r1, 1; - @!%p12 bra BB0_11; - bra.uni BB0_10; + @!%p17 bra BB0_13; + bra.uni BB0_12; -BB0_10: +BB0_12: rem.s32 %r78, %r9, %r34; add.s32 %r79, %r78, %r34; rem.s32 %r233, %r79, %r34; - bra.uni BB0_12; + bra.uni BB0_14; -BB0_11: +BB0_13: add.s32 %r80, %r34, -1; min.s32 %r233, %r9, %r80; -BB0_12: - setp.eq.b16 %p15, %rs17, 1; +BB0_14: + setp.eq.b16 %p18, %rs18, 1; mad.lo.s32 %r13, %r46, %r34, %r233; - setp.lt.s32 %p16, %r9, %r34; - or.pred %p17, %p16, %p15; - mov.f32 %f237, 0f00000000; - mov.f32 %f238, %f237; - mov.f32 %f239, %f237; - @!%p17 bra BB0_14; - bra.uni BB0_13; - -BB0_13: - mul.wide.s32 %rd37, %r13, 4; - add.s64 %rd38, %rd14, %rd37; - ld.global.f32 %f237, [%rd38]; - add.s64 %rd40, %rd13, %rd37; - ld.global.f32 %f238, [%rd40]; - add.s64 %rd42, %rd12, %rd37; - ld.global.f32 %f239, [%rd42]; + setp.lt.s32 %p19, %r9, %r34; + or.pred %p20, %p19, %p18; + mov.f32 %f260, 0f00000000; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @!%p20 bra BB0_16; + bra.uni BB0_15; + +BB0_15: + mul.wide.s32 %rd47, %r13, 4; + add.s64 %rd48, %rd26, %rd47; + ld.global.f32 %f260, [%rd48]; + add.s64 %rd50, %rd25, %rd47; + ld.global.f32 %f261, [%rd50]; + add.s64 %rd52, %rd24, %rd47; + ld.global.f32 %f262, [%rd52]; -BB0_14: - mul.f32 %f108, %f238, %f238; - fma.rn.f32 %f109, %f237, %f237, %f108; - fma.rn.f32 %f21, %f239, %f239, %f109; - setp.eq.f32 %p18, %f21, 0f00000000; +BB0_16: + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; mov.u16 %rs42, %rs1; - @%p18 bra BB0_16; + @%p21 bra BB0_18; - cvt.s64.s32 %rd44, %r13; - add.s64 %rd45, %rd11, %rd44; - ld.global.u8 %rs42, [%rd45]; + cvt.s64.s32 %rd54, %r13; + add.s64 %rd55, %rd23, %rd54; + ld.global.u8 %rs42, [%rd55]; -BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs39, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs42, %rs1; +BB0_18: + setp.gt.u16 %p22, %rs42, %rs1; cvt.u32.u16 %r92, %rs42; and.b32 %r93, %r92, 255; - selp.b32 %r94, %r65, %r93, %p19; - selp.b32 %r95, %r93, %r65, %p19; + selp.b32 %r94, %r65, %r93, %p22; + selp.b32 %r95, %r93, %r65, %p22; add.s32 %r96, %r95, 1; mul.lo.s32 %r97, %r96, %r95; shr.u32 %r98, %r97, 1; add.s32 %r99, %r98, %r94; - mul.wide.s32 %rd47, %r99, 4; - add.s64 %rd48, %rd31, %rd47; - add.s64 %rd50, %rd34, %rd47; - ld.global.f32 %f110, [%rd48]; - add.f32 %f111, %f110, %f110; - ld.global.f32 %f112, [%rd50]; - div.rn.f32 %f113, %f112, %f111; - mul.f32 %f114, %f113, %f233; - mul.f32 %f115, %f3, %f114; - sub.f32 %f116, %f2, %f115; - fma.rn.f32 %f117, %f2, %f114, %f3; - selp.f32 %f118, %f1, %f237, %p18; - selp.f32 %f119, %f116, %f238, %p18; - selp.f32 %f120, %f117, %f239, %p18; - div.rn.f32 %f121, %f111, %f11; - sub.f32 %f122, %f118, %f1; - sub.f32 %f123, %f119, %f2; - sub.f32 %f124, %f120, %f3; - fma.rn.f32 %f22, %f122, %f121, %f12; - fma.rn.f32 %f125, %f121, %f123, %f13; - fma.rn.f32 %f126, %f121, %f124, %f14; - div.rn.f32 %f127, %f112, %f233; - fma.rn.f32 %f23, %f127, %f120, %f125; - mul.f32 %f128, %f127, %f119; - sub.f32 %f24, %f126, %f128; - and.b16 %rs6, %rs39, 2; - setp.eq.s16 %p21, %rs6, 0; + mul.wide.s32 %rd57, %r99, 4; + add.s64 %rd3, %rd43, %rd57; + add.s64 %rd4, %rd45, %rd57; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + ld.global.f32 %f126, [%rd3]; + add.f32 %f127, %f126, %f126; + ld.global.f32 %f128, [%rd4]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs6, %rs16, 2; + setp.eq.s16 %p27, %rs6, 0; add.s32 %r14, %r2, -1; - @%p21 bra BB0_18; + @%p27 bra BB0_22; rem.s32 %r104, %r14, %r35; add.s32 %r105, %r104, %r35; rem.s32 %r234, %r105, %r35; - bra.uni BB0_19; + bra.uni BB0_23; -BB0_18: +BB0_22: mov.u32 %r106, 0; max.s32 %r234, %r14, %r106; -BB0_19: +BB0_23: mad.lo.s32 %r111, %r3, %r35, %r234; mad.lo.s32 %r18, %r111, %r34, %r1; - setp.lt.s32 %p23, %r14, 0; - mov.f32 %f240, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; - @%p24 bra BB0_21; - - mul.wide.s32 %rd52, %r18, 4; - add.s64 %rd53, %rd14, %rd52; - ld.global.f32 %f240, [%rd53]; - add.s64 %rd55, %rd13, %rd52; - ld.global.f32 %f241, [%rd55]; - add.s64 %rd57, %rd12, %rd52; - ld.global.f32 %f242, [%rd57]; - -BB0_21: - mul.f32 %f132, %f241, %f241; - fma.rn.f32 %f133, %f240, %f240, %f132; - fma.rn.f32 %f31, %f242, %f242, %f133; - setp.eq.f32 %p25, %f31, 0f00000000; + setp.lt.s32 %p29, %r14, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd60, %r18, 4; + add.s64 %rd61, %rd26, %rd60; + ld.global.f32 %f266, [%rd61]; + add.s64 %rd63, %rd25, %rd60; + ld.global.f32 %f267, [%rd63]; + add.s64 %rd65, %rd24, %rd60; + ld.global.f32 %f268, [%rd65]; + +BB0_25: + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; mov.u16 %rs43, %rs1; - @%p25 bra BB0_23; + @%p31 bra BB0_27; - cvt.s64.s32 %rd59, %r18; - add.s64 %rd60, %rd11, %rd59; - ld.global.u8 %rs43, [%rd60]; + cvt.s64.s32 %rd67, %r18; + add.s64 %rd68, %rd23, %rd67; + ld.global.u8 %rs43, [%rd68]; -BB0_23: - setp.gt.u16 %p26, %rs43, %rs1; +BB0_27: + setp.gt.u16 %p32, %rs43, %rs1; cvt.u32.u16 %r118, %rs43; and.b32 %r119, %r118, 255; - selp.b32 %r120, %r65, %r119, %p26; - selp.b32 %r121, %r119, %r65, %p26; + selp.b32 %r120, %r65, %r119, %p32; + selp.b32 %r121, %r119, %r65, %p32; add.s32 %r122, %r121, 1; mul.lo.s32 %r123, %r122, %r121; shr.u32 %r124, %r123, 1; add.s32 %r125, %r124, %r120; - mul.wide.s32 %rd62, %r125, 4; - add.s64 %rd63, %rd31, %rd62; - add.s64 %rd65, %rd34, %rd62; - ld.global.f32 %f134, [%rd63]; - add.f32 %f135, %f134, %f134; - ld.global.f32 %f136, [%rd65]; - div.rn.f32 %f137, %f136, %f135; - mul.f32 %f138, %f137, %f76; - mul.f32 %f139, %f3, %f138; - sub.f32 %f140, %f1, %f139; - fma.rn.f32 %f141, %f1, %f138, %f3; - selp.f32 %f142, %f140, %f240, %p25; - selp.f32 %f143, %f2, %f241, %p25; - selp.f32 %f144, %f141, %f242, %p25; - mul.f32 %f32, %f76, %f76; - div.rn.f32 %f145, %f135, %f32; - sub.f32 %f146, %f142, %f1; - sub.f32 %f147, %f143, %f2; - sub.f32 %f148, %f144, %f3; - fma.rn.f32 %f149, %f145, %f146, %f22; - fma.rn.f32 %f33, %f147, %f145, %f23; - fma.rn.f32 %f150, %f145, %f148, %f24; - div.rn.f32 %f151, %f136, %f76; - fma.rn.f32 %f34, %f151, %f144, %f149; - mul.f32 %f152, %f151, %f142; - sub.f32 %f35, %f150, %f152; + mul.wide.s32 %rd70, %r125, 4; + add.s64 %rd5, %rd43, %rd70; + add.s64 %rd6, %rd45, %rd70; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + ld.global.f32 %f151, [%rd5]; + add.f32 %f152, %f151, %f151; + ld.global.f32 %f153, [%rd6]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: add.s32 %r19, %r2, 1; - @%p21 bra BB0_25; + @%p27 bra BB0_31; rem.s32 %r130, %r19, %r35; add.s32 %r131, %r130, %r35; rem.s32 %r235, %r131, %r35; - bra.uni BB0_26; + bra.uni BB0_32; -BB0_25: +BB0_31: add.s32 %r132, %r35, -1; min.s32 %r235, %r19, %r132; -BB0_26: +BB0_32: + shr.u16 %rs30, %rs16, 1; + and.b16 %rs31, %rs30, 1; + setp.eq.b16 %p38, %rs31, 1; + not.pred %p39, %p38; mad.lo.s32 %r137, %r3, %r35, %r235; mad.lo.s32 %r23, %r137, %r34, %r1; - setp.ge.s32 %p29, %r19, %r35; - mov.f32 %f243, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p31 bra BB0_28; - - mul.wide.s32 %rd67, %r23, 4; - add.s64 %rd68, %rd14, %rd67; - ld.global.f32 %f243, [%rd68]; - add.s64 %rd70, %rd13, %rd67; - ld.global.f32 %f244, [%rd70]; - add.s64 %rd72, %rd12, %rd67; - ld.global.f32 %f245, [%rd72]; - -BB0_28: - mul.f32 %f156, %f244, %f244; - fma.rn.f32 %f157, %f243, %f243, %f156; - fma.rn.f32 %f42, %f245, %f245, %f157; - setp.eq.f32 %p32, %f42, 0f00000000; + setp.ge.s32 %p40, %r19, %r35; + mov.f32 %f272, 0f00000000; + and.pred %p41, %p40, %p39; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p41 bra BB0_34; + + mul.wide.s32 %rd73, %r23, 4; + add.s64 %rd74, %rd26, %rd73; + ld.global.f32 %f272, [%rd74]; + add.s64 %rd76, %rd25, %rd73; + ld.global.f32 %f273, [%rd76]; + add.s64 %rd78, %rd24, %rd73; + ld.global.f32 %f274, [%rd78]; + +BB0_34: + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p42, %f49, 0f00000000; mov.u16 %rs44, %rs1; - @%p32 bra BB0_30; + @%p42 bra BB0_36; - cvt.s64.s32 %rd74, %r23; - add.s64 %rd75, %rd11, %rd74; - ld.global.u8 %rs44, [%rd75]; + cvt.s64.s32 %rd80, %r23; + add.s64 %rd81, %rd23, %rd80; + ld.global.u8 %rs44, [%rd81]; -BB0_30: - setp.gt.u16 %p33, %rs44, %rs1; +BB0_36: + setp.gt.u16 %p43, %rs44, %rs1; cvt.u32.u16 %r144, %rs44; and.b32 %r145, %r144, 255; - selp.b32 %r146, %r65, %r145, %p33; - selp.b32 %r147, %r145, %r65, %p33; + selp.b32 %r146, %r65, %r145, %p43; + selp.b32 %r147, %r145, %r65, %p43; add.s32 %r148, %r147, 1; mul.lo.s32 %r149, %r148, %r147; shr.u32 %r150, %r149, 1; add.s32 %r151, %r150, %r146; - mul.wide.s32 %rd77, %r151, 4; - add.s64 %rd78, %rd31, %rd77; - add.s64 %rd80, %rd34, %rd77; - ld.global.f32 %f158, [%rd78]; - add.f32 %f159, %f158, %f158; - ld.global.f32 %f160, [%rd80]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f76; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f243, %p32; - selp.f32 %f167, %f2, %f244, %p32; - selp.f32 %f168, %f165, %f245, %p32; - div.rn.f32 %f169, %f159, %f32; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f34; - fma.rn.f32 %f253, %f171, %f169, %f33; - fma.rn.f32 %f174, %f169, %f172, %f35; - div.rn.f32 %f175, %f160, %f76; - mul.f32 %f176, %f175, %f168; - sub.f32 %f252, %f173, %f176; - fma.rn.f32 %f254, %f175, %f166, %f174; - setp.eq.s32 %p35, %r36, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs40, [adddmibulk_param_17]; - and.b16 %rs11, %rs40, 4; - setp.eq.s16 %p36, %rs11, 0; + mul.wide.s32 %rd83, %r151, 4; + add.s64 %rd7, %rd43, %rd83; + add.s64 %rd8, %rd45, %rd83; + and.pred %p46, %p42, %p13; + @%p46 bra BB0_38; + + ld.global.f32 %f176, [%rd7]; + add.f32 %f177, %f176, %f176; + ld.global.f32 %f178, [%rd8]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p42; + selp.f32 %f185, %f2, %f273, %p42; + selp.f32 %f186, %f183, %f274, %p42; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; + +BB0_38: + setp.eq.s32 %p48, %r36, 1; + @%p48 bra BB0_57; + + and.b16 %rs11, %rs16, 4; + setp.eq.s16 %p49, %rs11, 0; add.s32 %r24, %r3, -1; - @%p36 bra BB0_33; + @%p49 bra BB0_41; rem.s32 %r156, %r24, %r36; add.s32 %r157, %r156, %r36; rem.s32 %r236, %r157, %r36; - bra.uni BB0_34; + bra.uni BB0_42; -BB0_33: +BB0_41: mov.u32 %r158, 0; max.s32 %r236, %r24, %r158; -BB0_34: +BB0_42: mad.lo.s32 %r163, %r236, %r35, %r2; mad.lo.s32 %r28, %r163, %r34, %r1; - setp.lt.s32 %p38, %r24, 0; - mov.f32 %f246, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p39 bra BB0_36; - - mul.wide.s32 %rd82, %r28, 4; - add.s64 %rd83, %rd14, %rd82; - ld.global.f32 %f246, [%rd83]; - add.s64 %rd85, %rd13, %rd82; - ld.global.f32 %f247, [%rd85]; - add.s64 %rd87, %rd12, %rd82; - ld.global.f32 %f248, [%rd87]; - -BB0_36: - mul.f32 %f180, %f247, %f247; - fma.rn.f32 %f181, %f246, %f246, %f180; - fma.rn.f32 %f52, %f248, %f248, %f181; - setp.eq.f32 %p40, %f52, 0f00000000; + setp.lt.s32 %p51, %r24, 0; + mov.f32 %f278, 0f00000000; + and.pred %p52, %p51, %p49; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p52 bra BB0_44; + + mul.wide.s32 %rd86, %r28, 4; + add.s64 %rd87, %rd26, %rd86; + ld.global.f32 %f278, [%rd87]; + add.s64 %rd89, %rd25, %rd86; + ld.global.f32 %f279, [%rd89]; + add.s64 %rd91, %rd24, %rd86; + ld.global.f32 %f280, [%rd91]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p53, %f62, 0f00000000; mov.u16 %rs45, %rs1; - @%p40 bra BB0_38; + @%p53 bra BB0_46; - cvt.s64.s32 %rd89, %r28; - add.s64 %rd90, %rd11, %rd89; - ld.global.u8 %rs45, [%rd90]; + cvt.s64.s32 %rd93, %r28; + add.s64 %rd94, %rd23, %rd93; + ld.global.u8 %rs45, [%rd94]; -BB0_38: - setp.gt.u16 %p41, %rs45, %rs1; +BB0_46: + setp.gt.u16 %p54, %rs45, %rs1; cvt.u32.u16 %r170, %rs45; and.b32 %r171, %r170, 255; - selp.b32 %r172, %r65, %r171, %p41; - selp.b32 %r173, %r171, %r65, %p41; + selp.b32 %r172, %r65, %r171, %p54; + selp.b32 %r173, %r171, %r65, %p54; add.s32 %r174, %r173, 1; mul.lo.s32 %r175, %r174, %r173; shr.u32 %r176, %r175, 1; add.s32 %r177, %r176, %r172; - mul.wide.s32 %rd92, %r177, 4; - add.s64 %rd93, %rd31, %rd92; - add.s64 %rd95, %rd34, %rd92; - ld.global.f32 %f182, [%rd93]; - add.f32 %f183, %f182, %f182; - ld.global.f32 %f184, [%rd95]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f77; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f246, %p40; - selp.f32 %f191, %f189, %f247, %p40; - selp.f32 %f192, %f3, %f248, %p40; - mul.f32 %f53, %f77, %f77; - div.rn.f32 %f193, %f183, %f53; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f252; - fma.rn.f32 %f198, %f193, %f195, %f253; - fma.rn.f32 %f54, %f196, %f193, %f254; - div.rn.f32 %f199, %f184, %f77; - mul.f32 %f200, %f199, %f191; - sub.f32 %f55, %f197, %f200; - fma.rn.f32 %f56, %f199, %f190, %f198; + mul.wide.s32 %rd96, %r177, 4; + add.s64 %rd9, %rd43, %rd96; + add.s64 %rd10, %rd45, %rd96; + and.pred %p57, %p53, %p13; + @%p57 bra BB0_48; + + ld.global.f32 %f201, [%rd9]; + add.f32 %f202, %f201, %f201; + ld.global.f32 %f203, [%rd10]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p53; + selp.f32 %f210, %f208, %f279, %p53; + selp.f32 %f211, %f3, %f280, %p53; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; + +BB0_48: add.s32 %r29, %r3, 1; - @%p36 bra BB0_40; + @%p49 bra BB0_50; rem.s32 %r182, %r29, %r36; add.s32 %r183, %r182, %r36; rem.s32 %r237, %r183, %r36; - bra.uni BB0_41; + bra.uni BB0_51; -BB0_40: +BB0_50: add.s32 %r184, %r36, -1; min.s32 %r237, %r29, %r184; -BB0_41: +BB0_51: mad.lo.s32 %r189, %r237, %r35, %r2; mad.lo.s32 %r33, %r189, %r34, %r1; - setp.ge.s32 %p44, %r29, %r36; - mov.f32 %f249, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p46 bra BB0_43; - - mul.wide.s32 %rd97, %r33, 4; - add.s64 %rd98, %rd14, %rd97; - ld.global.f32 %f251, [%rd98]; - add.s64 %rd100, %rd13, %rd97; - ld.global.f32 %f250, [%rd100]; - add.s64 %rd102, %rd12, %rd97; - ld.global.f32 %f249, [%rd102]; - -BB0_43: - mul.f32 %f204, %f251, %f251; - fma.rn.f32 %f205, %f250, %f250, %f204; - fma.rn.f32 %f63, %f249, %f249, %f205; - setp.eq.f32 %p47, %f63, 0f00000000; + setp.ge.s32 %p60, %r29, %r36; + mov.f32 %f284, 0f00000000; + and.pred %p62, %p60, %p49; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p62 bra BB0_53; + + mul.wide.s32 %rd99, %r33, 4; + add.s64 %rd100, %rd26, %rd99; + ld.global.f32 %f286, [%rd100]; + add.s64 %rd102, %rd25, %rd99; + ld.global.f32 %f285, [%rd102]; + add.s64 %rd104, %rd24, %rd99; + ld.global.f32 %f284, [%rd104]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p63, %f75, 0f00000000; mov.u16 %rs46, %rs1; - @%p47 bra BB0_45; + @%p63 bra BB0_55; - cvt.s64.s32 %rd104, %r33; - add.s64 %rd105, %rd11, %rd104; - ld.global.u8 %rs46, [%rd105]; + cvt.s64.s32 %rd106, %r33; + add.s64 %rd107, %rd23, %rd106; + ld.global.u8 %rs46, [%rd107]; -BB0_45: - setp.gt.u16 %p48, %rs46, %rs1; +BB0_55: + setp.gt.u16 %p64, %rs46, %rs1; cvt.u32.u16 %r196, %rs46; and.b32 %r197, %r196, 255; - selp.b32 %r198, %r65, %r197, %p48; - selp.b32 %r199, %r197, %r65, %p48; + selp.b32 %r198, %r65, %r197, %p64; + selp.b32 %r199, %r197, %r65, %p64; add.s32 %r200, %r199, 1; mul.lo.s32 %r201, %r200, %r199; shr.u32 %r202, %r201, 1; add.s32 %r203, %r202, %r198; - mul.wide.s32 %rd107, %r203, 4; - add.s64 %rd108, %rd31, %rd107; - add.s64 %rd110, %rd34, %rd107; - ld.global.f32 %f206, [%rd108]; - add.f32 %f207, %f206, %f206; - ld.global.f32 %f208, [%rd110]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f77; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f249, %p47; - selp.f32 %f215, %f213, %f250, %p47; - selp.f32 %f216, %f212, %f251, %p47; - div.rn.f32 %f217, %f207, %f53; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f55; - fma.rn.f32 %f222, %f217, %f219, %f56; - fma.rn.f32 %f254, %f220, %f217, %f54; - div.rn.f32 %f223, %f208, %f77; - fma.rn.f32 %f252, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f253, %f222, %f224; - -BB0_46: - setp.eq.s64 %p50, %rd7, 0; - @%p50 bra BB0_48; - - cvta.to.global.u64 %rd111, %rd7; - add.s64 %rd113, %rd111, %rd15; - ld.global.f32 %f225, [%rd113]; - mul.f32 %f255, %f225, %f255; - -BB0_48: - setp.eq.f32 %p51, %f255, 0f00000000; - mov.f32 %f256, 0f00000000; - @%p51 bra BB0_50; - - rcp.rn.f32 %f256, %f255; - -BB0_50: - cvta.to.global.u64 %rd114, %rd1; - add.s64 %rd116, %rd114, %rd15; - ld.global.f32 %f227, [%rd116]; - fma.rn.f32 %f228, %f252, %f256, %f227; - st.global.f32 [%rd116], %f228; - cvta.to.global.u64 %rd117, %rd2; - add.s64 %rd118, %rd117, %rd15; - ld.global.f32 %f229, [%rd118]; - fma.rn.f32 %f230, %f253, %f256, %f229; - st.global.f32 [%rd118], %f230; - cvta.to.global.u64 %rd119, %rd3; - add.s64 %rd120, %rd119, %rd15; - ld.global.f32 %f231, [%rd120]; - fma.rn.f32 %f232, %f254, %f256, %f231; - st.global.f32 [%rd120], %f232; - -BB0_51: + mul.wide.s32 %rd109, %r203, 4; + add.s64 %rd11, %rd43, %rd109; + add.s64 %rd12, %rd45, %rd109; + and.pred %p67, %p63, %p13; + @%p67 bra BB0_57; + + ld.global.f32 %f226, [%rd11]; + add.f32 %f227, %f226, %f226; + ld.global.f32 %f228, [%rd12]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p63; + selp.f32 %f235, %f233, %f285, %p63; + selp.f32 %f236, %f232, %f286, %p63; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p69, %rd19, 0; + @%p69 bra BB0_59; + + cvta.to.global.u64 %rd111, %rd19; + add.s64 %rd113, %rd111, %rd27; + ld.global.f32 %f246, [%rd113]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p70, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p70 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd114, %rd13; + add.s64 %rd116, %rd114, %rd27; + ld.global.f32 %f248, [%rd116]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd116], %f249; + cvta.to.global.u64 %rd117, %rd14; + add.s64 %rd118, %rd117, %rd27; + ld.global.f32 %f250, [%rd118]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd118], %f251; + cvta.to.global.u64 %rd119, %rd15; + add.s64 %rd120, %rd119, %rd27; + ld.global.f32 %f252, [%rd120]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd120], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_35.ptx b/cuda/dmibulk_35.ptx index cd6dc59aa..55a82c476 100644 --- a/cuda/dmibulk_35.ptx +++ b/cuda/dmibulk_35.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_35 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_37.ptx b/cuda/dmibulk_37.ptx index 9763cde46..32862c97c 100644 --- a/cuda/dmibulk_37.ptx +++ b/cuda/dmibulk_37.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_37 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_50.ptx b/cuda/dmibulk_50.ptx index 0ab8c7eb0..c9d167d9c 100644 --- a/cuda/dmibulk_50.ptx +++ b/cuda/dmibulk_50.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_50 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_52.ptx b/cuda/dmibulk_52.ptx index 1342f91e6..de28d1e1b 100644 --- a/cuda/dmibulk_52.ptx +++ b/cuda/dmibulk_52.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_52 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_53.ptx b/cuda/dmibulk_53.ptx index 47e1b99d4..0e4b21272 100644 --- a/cuda/dmibulk_53.ptx +++ b/cuda/dmibulk_53.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_53 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_60.ptx b/cuda/dmibulk_60.ptx index 0f52429dc..222bf6a59 100644 --- a/cuda/dmibulk_60.ptx +++ b/cuda/dmibulk_60.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_60 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_61.ptx b/cuda/dmibulk_61.ptx index 99315b4f0..68f32598e 100644 --- a/cuda/dmibulk_61.ptx +++ b/cuda/dmibulk_61.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_61 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_62.ptx b/cuda/dmibulk_62.ptx deleted file mode 100644 index 9f4015051..000000000 --- a/cuda/dmibulk_62.ptx +++ /dev/null @@ -1,813 +0,0 @@ -// -// Generated by NVIDIA NVVM Compiler -// -// Compiler Build ID: CL-21554848 -// Cuda compilation tools, release 8.0, V8.0.61 -// Based on LLVM 3.4svn -// - -.version 5.0 -.target sm_62 -.address_size 64 - - // .globl adddmibulk - -.visible .entry adddmibulk( - .param .u64 adddmibulk_param_0, - .param .u64 adddmibulk_param_1, - .param .u64 adddmibulk_param_2, - .param .u64 adddmibulk_param_3, - .param .u64 adddmibulk_param_4, - .param .u64 adddmibulk_param_5, - .param .u64 adddmibulk_param_6, - .param .f32 adddmibulk_param_7, - .param .u64 adddmibulk_param_8, - .param .u64 adddmibulk_param_9, - .param .u64 adddmibulk_param_10, - .param .f32 adddmibulk_param_11, - .param .f32 adddmibulk_param_12, - .param .f32 adddmibulk_param_13, - .param .u32 adddmibulk_param_14, - .param .u32 adddmibulk_param_15, - .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 -) -{ - .reg .pred %p<58>; - .reg .b16 %rs<62>; - .reg .f32 %f<256>; - .reg .b32 %r<324>; - .reg .b64 %rd<127>; - - - ld.param.u64 %rd1, [adddmibulk_param_0]; - ld.param.u64 %rd2, [adddmibulk_param_1]; - ld.param.u64 %rd3, [adddmibulk_param_2]; - ld.param.u64 %rd4, [adddmibulk_param_3]; - ld.param.u64 %rd5, [adddmibulk_param_4]; - ld.param.u64 %rd6, [adddmibulk_param_5]; - ld.param.u64 %rd7, [adddmibulk_param_6]; - ld.param.f32 %f254, [adddmibulk_param_7]; - ld.param.u64 %rd8, [adddmibulk_param_8]; - ld.param.u64 %rd9, [adddmibulk_param_9]; - ld.param.u64 %rd10, [adddmibulk_param_10]; - ld.param.f32 %f81, [adddmibulk_param_11]; - ld.param.f32 %f82, [adddmibulk_param_12]; - ld.param.f32 %f83, [adddmibulk_param_13]; - ld.param.u32 %r77, [adddmibulk_param_14]; - ld.param.u32 %r78, [adddmibulk_param_15]; - ld.param.u32 %r79, [adddmibulk_param_16]; - ld.param.u8 %rs16, [adddmibulk_param_17]; - mov.u32 %r80, %ntid.x; - mov.u32 %r81, %ctaid.x; - mov.u32 %r82, %tid.x; - mad.lo.s32 %r1, %r80, %r81, %r82; - mov.u32 %r83, %ntid.y; - mov.u32 %r84, %ctaid.y; - mov.u32 %r85, %tid.y; - mad.lo.s32 %r2, %r83, %r84, %r85; - mov.u32 %r86, %ntid.z; - mov.u32 %r87, %ctaid.z; - mov.u32 %r88, %tid.z; - mad.lo.s32 %r3, %r86, %r87, %r88; - setp.ge.s32 %p1, %r2, %r78; - setp.ge.s32 %p2, %r1, %r77; - or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r79; - or.pred %p5, %p3, %p4; - @%p5 bra BB0_87; - - cvta.to.global.u64 %rd11, %rd10; - cvta.to.global.u64 %rd12, %rd6; - cvta.to.global.u64 %rd13, %rd5; - cvta.to.global.u64 %rd14, %rd4; - mad.lo.s32 %r89, %r3, %r78, %r2; - mad.lo.s32 %r90, %r89, %r77, %r1; - cvt.s64.s32 %rd15, %r90; - mul.wide.s32 %rd16, %r90, 4; - add.s64 %rd17, %rd14, %rd16; - add.s64 %rd18, %rd13, %rd16; - add.s64 %rd19, %rd12, %rd16; - add.s64 %rd20, %rd11, %rd15; - ld.global.nc.u8 %rs1, [%rd20]; - cvt.u32.u16 %r91, %rs1; - and.b32 %r4, %r91, 255; - ld.global.nc.f32 %f1, [%rd17]; - ld.global.nc.f32 %f2, [%rd18]; - mul.f32 %f84, %f2, %f2; - fma.rn.f32 %f85, %f1, %f1, %f84; - ld.global.nc.f32 %f3, [%rd19]; - fma.rn.f32 %f86, %f3, %f3, %f85; - setp.eq.f32 %p6, %f86, 0f00000000; - @%p6 bra BB0_87; - - and.b16 %rs17, %rs16, 1; - setp.eq.b16 %p7, %rs17, 1; - add.s32 %r5, %r1, -1; - @!%p7 bra BB0_4; - bra.uni BB0_3; - -BB0_3: - rem.s32 %r96, %r5, %r77; - add.s32 %r97, %r96, %r77; - rem.s32 %r306, %r97, %r77; - bra.uni BB0_5; - -BB0_4: - mov.u32 %r98, 0; - max.s32 %r306, %r5, %r98; - -BB0_5: - mad.lo.s32 %r9, %r89, %r77, %r306; - setp.gt.s32 %p8, %r1, 0; - setp.eq.b16 %p9, %rs17, 1; - or.pred %p10, %p8, %p9; - mov.f32 %f235, 0f00000000; - mov.f32 %f234, %f235; - mov.f32 %f233, %f235; - @!%p10 bra BB0_7; - bra.uni BB0_6; - -BB0_6: - mul.wide.s32 %rd22, %r9, 4; - add.s64 %rd23, %rd14, %rd22; - ld.global.nc.f32 %f233, [%rd23]; - add.s64 %rd25, %rd13, %rd22; - ld.global.nc.f32 %f234, [%rd25]; - add.s64 %rd27, %rd12, %rd22; - ld.global.nc.f32 %f235, [%rd27]; - -BB0_7: - mul.f32 %f90, %f234, %f234; - fma.rn.f32 %f91, %f233, %f233, %f90; - fma.rn.f32 %f10, %f235, %f235, %f91; - setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs61, %rs1; - @%p11 bra BB0_9; - - cvt.s64.s32 %rd28, %r9; - add.s64 %rd30, %rd11, %rd28; - ld.global.nc.u8 %rs2, [%rd30]; - mov.u16 %rs61, %rs2; - -BB0_9: - mov.u16 %rs3, %rs61; - cvt.u32.u16 %r112, %rs3; - and.b32 %r10, %r112, 255; - setp.gt.u16 %p12, %rs3, %rs1; - @%p12 bra BB0_11; - bra.uni BB0_10; - -BB0_11: - add.s32 %r116, %r10, 1; - mul.lo.s32 %r117, %r116, %r10; - shr.u32 %r118, %r117, 1; - add.s32 %r307, %r118, %r4; - bra.uni BB0_12; - -BB0_10: - add.s32 %r113, %r4, 1; - mul.lo.s32 %r114, %r113, %r4; - shr.u32 %r115, %r114, 1; - add.s32 %r307, %r10, %r115; - -BB0_12: - cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r307, 4; - add.s64 %rd33, %rd31, %rd32; - ld.global.nc.f32 %f11, [%rd33]; - @%p12 bra BB0_14; - bra.uni BB0_13; - -BB0_14: - add.s32 %r122, %r10, 1; - mul.lo.s32 %r123, %r122, %r10; - shr.u32 %r124, %r123, 1; - add.s32 %r308, %r124, %r4; - bra.uni BB0_15; - -BB0_13: - add.s32 %r119, %r4, 1; - mul.lo.s32 %r120, %r119, %r4; - shr.u32 %r121, %r120, 1; - add.s32 %r308, %r10, %r121; - -BB0_15: - setp.eq.b16 %p14, %rs17, 1; - cvta.to.global.u64 %rd34, %rd9; - mul.wide.s32 %rd35, %r308, 4; - add.s64 %rd36, %rd34, %rd35; - add.f32 %f92, %f11, %f11; - ld.global.nc.f32 %f93, [%rd36]; - div.rn.f32 %f94, %f93, %f92; - mul.f32 %f95, %f94, %f81; - fma.rn.f32 %f96, %f3, %f95, %f2; - mul.f32 %f97, %f2, %f95; - sub.f32 %f98, %f3, %f97; - selp.f32 %f99, %f1, %f233, %p11; - selp.f32 %f100, %f96, %f234, %p11; - selp.f32 %f101, %f98, %f235, %p11; - mul.f32 %f12, %f81, %f81; - div.rn.f32 %f102, %f92, %f12; - sub.f32 %f103, %f99, %f1; - sub.f32 %f104, %f100, %f2; - sub.f32 %f105, %f101, %f3; - fma.rn.f32 %f13, %f103, %f102, 0f00000000; - fma.rn.f32 %f106, %f102, %f104, 0f00000000; - fma.rn.f32 %f107, %f102, %f105, 0f00000000; - div.rn.f32 %f108, %f93, %f81; - mul.f32 %f109, %f108, %f101; - sub.f32 %f14, %f106, %f109; - fma.rn.f32 %f15, %f108, %f100, %f107; - add.s32 %r17, %r1, 1; - @!%p14 bra BB0_17; - bra.uni BB0_16; - -BB0_16: - rem.s32 %r129, %r17, %r77; - add.s32 %r130, %r129, %r77; - rem.s32 %r309, %r130, %r77; - bra.uni BB0_18; - -BB0_17: - add.s32 %r131, %r77, -1; - min.s32 %r309, %r17, %r131; - -BB0_18: - setp.eq.b16 %p16, %rs17, 1; - mad.lo.s32 %r21, %r89, %r77, %r309; - setp.lt.s32 %p17, %r17, %r77; - or.pred %p18, %p17, %p16; - mov.f32 %f238, 0f00000000; - mov.f32 %f237, %f238; - mov.f32 %f236, %f238; - @!%p18 bra BB0_20; - bra.uni BB0_19; - -BB0_19: - mul.wide.s32 %rd38, %r21, 4; - add.s64 %rd39, %rd14, %rd38; - ld.global.nc.f32 %f236, [%rd39]; - add.s64 %rd41, %rd13, %rd38; - ld.global.nc.f32 %f237, [%rd41]; - add.s64 %rd43, %rd12, %rd38; - ld.global.nc.f32 %f238, [%rd43]; - -BB0_20: - mul.f32 %f113, %f237, %f237; - fma.rn.f32 %f114, %f236, %f236, %f113; - fma.rn.f32 %f22, %f238, %f238, %f114; - setp.eq.f32 %p19, %f22, 0f00000000; - mov.u16 %rs60, %rs1; - @%p19 bra BB0_22; - - cvt.s64.s32 %rd44, %r21; - add.s64 %rd46, %rd11, %rd44; - ld.global.nc.u8 %rs60, [%rd46]; - -BB0_22: - cvt.u32.u16 %r141, %rs60; - and.b32 %r22, %r141, 255; - setp.gt.u16 %p20, %rs60, %rs1; - @%p20 bra BB0_24; - bra.uni BB0_23; - -BB0_24: - add.s32 %r145, %r22, 1; - mul.lo.s32 %r146, %r145, %r22; - shr.u32 %r147, %r146, 1; - add.s32 %r310, %r147, %r4; - bra.uni BB0_25; - -BB0_23: - add.s32 %r142, %r4, 1; - mul.lo.s32 %r143, %r142, %r4; - shr.u32 %r144, %r143, 1; - add.s32 %r310, %r22, %r144; - -BB0_25: - mul.wide.s32 %rd48, %r310, 4; - add.s64 %rd49, %rd31, %rd48; - ld.global.nc.f32 %f23, [%rd49]; - @%p20 bra BB0_27; - bra.uni BB0_26; - -BB0_27: - add.s32 %r151, %r22, 1; - mul.lo.s32 %r152, %r151, %r22; - shr.u32 %r153, %r152, 1; - add.s32 %r311, %r153, %r4; - bra.uni BB0_28; - -BB0_26: - add.s32 %r148, %r4, 1; - mul.lo.s32 %r149, %r148, %r4; - shr.u32 %r150, %r149, 1; - add.s32 %r311, %r22, %r150; - -BB0_28: - mul.wide.s32 %rd51, %r311, 4; - add.s64 %rd52, %rd34, %rd51; - add.f32 %f115, %f23, %f23; - ld.global.nc.f32 %f116, [%rd52]; - div.rn.f32 %f117, %f116, %f115; - mul.f32 %f118, %f117, %f81; - mul.f32 %f119, %f3, %f118; - sub.f32 %f120, %f2, %f119; - fma.rn.f32 %f121, %f2, %f118, %f3; - selp.f32 %f122, %f1, %f236, %p19; - selp.f32 %f123, %f120, %f237, %p19; - selp.f32 %f124, %f121, %f238, %p19; - div.rn.f32 %f125, %f115, %f12; - sub.f32 %f126, %f122, %f1; - sub.f32 %f127, %f123, %f2; - sub.f32 %f128, %f124, %f3; - fma.rn.f32 %f24, %f126, %f125, %f13; - fma.rn.f32 %f129, %f125, %f127, %f14; - fma.rn.f32 %f130, %f125, %f128, %f15; - div.rn.f32 %f131, %f116, %f81; - fma.rn.f32 %f25, %f131, %f124, %f129; - mul.f32 %f132, %f131, %f123; - sub.f32 %f26, %f130, %f132; - and.b16 %rs6, %rs16, 2; - setp.eq.s16 %p23, %rs6, 0; - add.s32 %r29, %r2, -1; - @%p23 bra BB0_30; - - rem.s32 %r158, %r29, %r78; - add.s32 %r159, %r158, %r78; - rem.s32 %r312, %r159, %r78; - bra.uni BB0_31; - -BB0_30: - mov.u32 %r160, 0; - max.s32 %r312, %r29, %r160; - -BB0_31: - mad.lo.s32 %r165, %r3, %r78, %r312; - mad.lo.s32 %r33, %r165, %r77, %r1; - setp.gt.s32 %p24, %r2, 0; - setp.ne.s16 %p25, %rs6, 0; - or.pred %p26, %p24, %p25; - mov.f32 %f241, 0f00000000; - mov.f32 %f240, %f241; - mov.f32 %f239, %f241; - @!%p26 bra BB0_33; - bra.uni BB0_32; - -BB0_32: - mul.wide.s32 %rd54, %r33, 4; - add.s64 %rd55, %rd14, %rd54; - ld.global.nc.f32 %f239, [%rd55]; - add.s64 %rd57, %rd13, %rd54; - ld.global.nc.f32 %f240, [%rd57]; - add.s64 %rd59, %rd12, %rd54; - ld.global.nc.f32 %f241, [%rd59]; - -BB0_33: - mul.f32 %f136, %f240, %f240; - fma.rn.f32 %f137, %f239, %f239, %f136; - fma.rn.f32 %f33, %f241, %f241, %f137; - setp.eq.f32 %p27, %f33, 0f00000000; - mov.u16 %rs59, %rs1; - @%p27 bra BB0_35; - - cvt.s64.s32 %rd60, %r33; - add.s64 %rd62, %rd11, %rd60; - ld.global.nc.u8 %rs59, [%rd62]; - -BB0_35: - cvt.u32.u16 %r174, %rs59; - and.b32 %r34, %r174, 255; - setp.gt.u16 %p28, %rs59, %rs1; - @%p28 bra BB0_37; - bra.uni BB0_36; - -BB0_37: - add.s32 %r178, %r34, 1; - mul.lo.s32 %r179, %r178, %r34; - shr.u32 %r180, %r179, 1; - add.s32 %r313, %r180, %r4; - bra.uni BB0_38; - -BB0_36: - add.s32 %r175, %r4, 1; - mul.lo.s32 %r176, %r175, %r4; - shr.u32 %r177, %r176, 1; - add.s32 %r313, %r34, %r177; - -BB0_38: - mul.wide.s32 %rd64, %r313, 4; - add.s64 %rd65, %rd31, %rd64; - ld.global.nc.f32 %f34, [%rd65]; - @%p28 bra BB0_40; - bra.uni BB0_39; - -BB0_40: - add.s32 %r184, %r34, 1; - mul.lo.s32 %r185, %r184, %r34; - shr.u32 %r186, %r185, 1; - add.s32 %r314, %r186, %r4; - bra.uni BB0_41; - -BB0_39: - add.s32 %r181, %r4, 1; - mul.lo.s32 %r182, %r181, %r4; - shr.u32 %r183, %r182, 1; - add.s32 %r314, %r34, %r183; - -BB0_41: - mul.wide.s32 %rd67, %r314, 4; - add.s64 %rd68, %rd34, %rd67; - add.f32 %f138, %f34, %f34; - ld.global.nc.f32 %f139, [%rd68]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f82; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f145, %f143, %f239, %p27; - selp.f32 %f146, %f2, %f240, %p27; - selp.f32 %f147, %f144, %f241, %p27; - mul.f32 %f35, %f82, %f82; - div.rn.f32 %f148, %f138, %f35; - sub.f32 %f149, %f145, %f1; - sub.f32 %f150, %f146, %f2; - sub.f32 %f151, %f147, %f3; - fma.rn.f32 %f152, %f148, %f149, %f24; - fma.rn.f32 %f36, %f150, %f148, %f25; - fma.rn.f32 %f153, %f148, %f151, %f26; - div.rn.f32 %f154, %f139, %f82; - fma.rn.f32 %f37, %f154, %f147, %f152; - mul.f32 %f155, %f154, %f145; - sub.f32 %f38, %f153, %f155; - add.s32 %r41, %r2, 1; - @%p23 bra BB0_43; - - rem.s32 %r191, %r41, %r78; - add.s32 %r192, %r191, %r78; - rem.s32 %r315, %r192, %r78; - bra.uni BB0_44; - -BB0_43: - add.s32 %r193, %r78, -1; - min.s32 %r315, %r41, %r193; - -BB0_44: - mad.lo.s32 %r198, %r3, %r78, %r315; - mad.lo.s32 %r45, %r198, %r77, %r1; - setp.lt.s32 %p32, %r41, %r78; - or.pred %p34, %p32, %p25; - mov.f32 %f244, 0f00000000; - mov.f32 %f243, %f244; - mov.f32 %f242, %f244; - @!%p34 bra BB0_46; - bra.uni BB0_45; - -BB0_45: - mul.wide.s32 %rd70, %r45, 4; - add.s64 %rd71, %rd14, %rd70; - ld.global.nc.f32 %f242, [%rd71]; - add.s64 %rd73, %rd13, %rd70; - ld.global.nc.f32 %f243, [%rd73]; - add.s64 %rd75, %rd12, %rd70; - ld.global.nc.f32 %f244, [%rd75]; - -BB0_46: - mul.f32 %f159, %f243, %f243; - fma.rn.f32 %f160, %f242, %f242, %f159; - fma.rn.f32 %f45, %f244, %f244, %f160; - setp.eq.f32 %p35, %f45, 0f00000000; - mov.u16 %rs58, %rs1; - @%p35 bra BB0_48; - - cvt.s64.s32 %rd76, %r45; - add.s64 %rd78, %rd11, %rd76; - ld.global.nc.u8 %rs58, [%rd78]; - -BB0_48: - cvt.u32.u16 %r203, %rs58; - and.b32 %r46, %r203, 255; - setp.gt.u16 %p36, %rs58, %rs1; - @%p36 bra BB0_50; - bra.uni BB0_49; - -BB0_50: - add.s32 %r207, %r46, 1; - mul.lo.s32 %r208, %r207, %r46; - shr.u32 %r209, %r208, 1; - add.s32 %r316, %r209, %r4; - bra.uni BB0_51; - -BB0_49: - add.s32 %r204, %r4, 1; - mul.lo.s32 %r205, %r204, %r4; - shr.u32 %r206, %r205, 1; - add.s32 %r316, %r46, %r206; - -BB0_51: - mul.wide.s32 %rd80, %r316, 4; - add.s64 %rd81, %rd31, %rd80; - ld.global.nc.f32 %f46, [%rd81]; - @%p36 bra BB0_53; - bra.uni BB0_52; - -BB0_53: - add.s32 %r213, %r46, 1; - mul.lo.s32 %r214, %r213, %r46; - shr.u32 %r215, %r214, 1; - add.s32 %r317, %r215, %r4; - bra.uni BB0_54; - -BB0_52: - add.s32 %r210, %r4, 1; - mul.lo.s32 %r211, %r210, %r4; - shr.u32 %r212, %r211, 1; - add.s32 %r317, %r46, %r212; - -BB0_54: - mul.wide.s32 %rd83, %r317, 4; - add.s64 %rd84, %rd34, %rd83; - add.f32 %f161, %f46, %f46; - ld.global.nc.f32 %f162, [%rd84]; - div.rn.f32 %f163, %f162, %f161; - mul.f32 %f164, %f163, %f82; - fma.rn.f32 %f165, %f3, %f164, %f1; - mul.f32 %f166, %f1, %f164; - sub.f32 %f167, %f3, %f166; - selp.f32 %f168, %f165, %f242, %p35; - selp.f32 %f169, %f2, %f243, %p35; - selp.f32 %f170, %f167, %f244, %p35; - div.rn.f32 %f171, %f161, %f35; - sub.f32 %f172, %f168, %f1; - sub.f32 %f173, %f169, %f2; - sub.f32 %f174, %f170, %f3; - fma.rn.f32 %f175, %f171, %f172, %f37; - fma.rn.f32 %f252, %f173, %f171, %f36; - fma.rn.f32 %f176, %f171, %f174, %f38; - div.rn.f32 %f177, %f162, %f82; - mul.f32 %f178, %f177, %f170; - sub.f32 %f251, %f175, %f178; - fma.rn.f32 %f253, %f177, %f168, %f176; - setp.eq.s32 %p39, %r79, 1; - @%p39 bra BB0_82; - - and.b16 %rs11, %rs16, 4; - setp.eq.s16 %p40, %rs11, 0; - add.s32 %r53, %r3, -1; - @%p40 bra BB0_57; - - rem.s32 %r220, %r53, %r79; - add.s32 %r221, %r220, %r79; - rem.s32 %r318, %r221, %r79; - bra.uni BB0_58; - -BB0_57: - mov.u32 %r222, 0; - max.s32 %r318, %r53, %r222; - -BB0_58: - mad.lo.s32 %r227, %r318, %r78, %r2; - mad.lo.s32 %r57, %r227, %r77, %r1; - setp.gt.s32 %p41, %r3, 0; - setp.ne.s16 %p42, %rs11, 0; - or.pred %p43, %p41, %p42; - mov.f32 %f247, 0f00000000; - mov.f32 %f246, %f247; - mov.f32 %f245, %f247; - @!%p43 bra BB0_60; - bra.uni BB0_59; - -BB0_59: - mul.wide.s32 %rd86, %r57, 4; - add.s64 %rd87, %rd14, %rd86; - ld.global.nc.f32 %f245, [%rd87]; - add.s64 %rd89, %rd13, %rd86; - ld.global.nc.f32 %f246, [%rd89]; - add.s64 %rd91, %rd12, %rd86; - ld.global.nc.f32 %f247, [%rd91]; - -BB0_60: - mul.f32 %f182, %f246, %f246; - fma.rn.f32 %f183, %f245, %f245, %f182; - fma.rn.f32 %f56, %f247, %f247, %f183; - setp.eq.f32 %p44, %f56, 0f00000000; - mov.u16 %rs57, %rs1; - @%p44 bra BB0_62; - - cvt.s64.s32 %rd92, %r57; - add.s64 %rd94, %rd11, %rd92; - ld.global.nc.u8 %rs57, [%rd94]; - -BB0_62: - cvt.u32.u16 %r236, %rs57; - and.b32 %r58, %r236, 255; - setp.gt.u16 %p45, %rs57, %rs1; - @%p45 bra BB0_64; - bra.uni BB0_63; - -BB0_64: - add.s32 %r240, %r58, 1; - mul.lo.s32 %r241, %r240, %r58; - shr.u32 %r242, %r241, 1; - add.s32 %r319, %r242, %r4; - bra.uni BB0_65; - -BB0_63: - add.s32 %r237, %r4, 1; - mul.lo.s32 %r238, %r237, %r4; - shr.u32 %r239, %r238, 1; - add.s32 %r319, %r58, %r239; - -BB0_65: - mul.wide.s32 %rd96, %r319, 4; - add.s64 %rd97, %rd31, %rd96; - ld.global.nc.f32 %f57, [%rd97]; - @%p45 bra BB0_67; - bra.uni BB0_66; - -BB0_67: - add.s32 %r246, %r58, 1; - mul.lo.s32 %r247, %r246, %r58; - shr.u32 %r248, %r247, 1; - add.s32 %r320, %r248, %r4; - bra.uni BB0_68; - -BB0_66: - add.s32 %r243, %r4, 1; - mul.lo.s32 %r244, %r243, %r4; - shr.u32 %r245, %r244, 1; - add.s32 %r320, %r58, %r245; - -BB0_68: - mul.wide.s32 %rd99, %r320, 4; - add.s64 %rd100, %rd34, %rd99; - add.f32 %f184, %f57, %f57; - ld.global.nc.f32 %f185, [%rd100]; - div.rn.f32 %f186, %f185, %f184; - mul.f32 %f187, %f186, %f83; - fma.rn.f32 %f188, %f2, %f187, %f1; - mul.f32 %f189, %f1, %f187; - sub.f32 %f190, %f2, %f189; - selp.f32 %f191, %f188, %f245, %p44; - selp.f32 %f192, %f190, %f246, %p44; - selp.f32 %f193, %f3, %f247, %p44; - mul.f32 %f58, %f83, %f83; - div.rn.f32 %f194, %f184, %f58; - sub.f32 %f195, %f191, %f1; - sub.f32 %f196, %f192, %f2; - sub.f32 %f197, %f193, %f3; - fma.rn.f32 %f198, %f194, %f195, %f251; - fma.rn.f32 %f199, %f194, %f196, %f252; - fma.rn.f32 %f59, %f197, %f194, %f253; - div.rn.f32 %f200, %f185, %f83; - mul.f32 %f201, %f200, %f192; - sub.f32 %f60, %f198, %f201; - fma.rn.f32 %f61, %f200, %f191, %f199; - add.s32 %r65, %r3, 1; - @%p40 bra BB0_70; - - rem.s32 %r253, %r65, %r79; - add.s32 %r254, %r253, %r79; - rem.s32 %r321, %r254, %r79; - bra.uni BB0_71; - -BB0_70: - add.s32 %r255, %r79, -1; - min.s32 %r321, %r65, %r255; - -BB0_71: - mad.lo.s32 %r260, %r321, %r78, %r2; - mad.lo.s32 %r69, %r260, %r77, %r1; - setp.lt.s32 %p49, %r65, %r79; - or.pred %p51, %p49, %p42; - mov.f32 %f250, 0f00000000; - mov.f32 %f249, %f250; - mov.f32 %f248, %f250; - @!%p51 bra BB0_73; - bra.uni BB0_72; - -BB0_72: - mul.wide.s32 %rd102, %r69, 4; - add.s64 %rd103, %rd14, %rd102; - ld.global.nc.f32 %f250, [%rd103]; - add.s64 %rd105, %rd13, %rd102; - ld.global.nc.f32 %f249, [%rd105]; - add.s64 %rd107, %rd12, %rd102; - ld.global.nc.f32 %f248, [%rd107]; - -BB0_73: - mul.f32 %f205, %f250, %f250; - fma.rn.f32 %f206, %f249, %f249, %f205; - fma.rn.f32 %f68, %f248, %f248, %f206; - setp.eq.f32 %p52, %f68, 0f00000000; - mov.u16 %rs56, %rs1; - @%p52 bra BB0_75; - - cvt.s64.s32 %rd108, %r69; - add.s64 %rd110, %rd11, %rd108; - ld.global.nc.u8 %rs56, [%rd110]; - -BB0_75: - cvt.u32.u16 %r265, %rs56; - and.b32 %r70, %r265, 255; - setp.gt.u16 %p53, %rs56, %rs1; - @%p53 bra BB0_77; - bra.uni BB0_76; - -BB0_77: - add.s32 %r269, %r70, 1; - mul.lo.s32 %r270, %r269, %r70; - shr.u32 %r271, %r270, 1; - add.s32 %r322, %r271, %r4; - bra.uni BB0_78; - -BB0_76: - add.s32 %r266, %r4, 1; - mul.lo.s32 %r267, %r266, %r4; - shr.u32 %r268, %r267, 1; - add.s32 %r322, %r70, %r268; - -BB0_78: - mul.wide.s32 %rd112, %r322, 4; - add.s64 %rd113, %rd31, %rd112; - ld.global.nc.f32 %f69, [%rd113]; - @%p53 bra BB0_80; - bra.uni BB0_79; - -BB0_80: - add.s32 %r275, %r70, 1; - mul.lo.s32 %r276, %r275, %r70; - shr.u32 %r277, %r276, 1; - add.s32 %r323, %r277, %r4; - bra.uni BB0_81; - -BB0_79: - add.s32 %r272, %r4, 1; - mul.lo.s32 %r273, %r272, %r4; - shr.u32 %r274, %r273, 1; - add.s32 %r323, %r70, %r274; - -BB0_81: - mul.wide.s32 %rd115, %r323, 4; - add.s64 %rd116, %rd34, %rd115; - add.f32 %f207, %f69, %f69; - ld.global.nc.f32 %f208, [%rd116]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f83; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f248, %p52; - selp.f32 %f215, %f213, %f249, %p52; - selp.f32 %f216, %f212, %f250, %p52; - div.rn.f32 %f217, %f207, %f58; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f60; - fma.rn.f32 %f222, %f217, %f219, %f61; - fma.rn.f32 %f253, %f220, %f217, %f59; - div.rn.f32 %f223, %f208, %f83; - fma.rn.f32 %f251, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f252, %f222, %f224; - -BB0_82: - setp.eq.s64 %p56, %rd7, 0; - @%p56 bra BB0_84; - - cvta.to.global.u64 %rd117, %rd7; - add.s64 %rd119, %rd117, %rd16; - ld.global.nc.f32 %f225, [%rd119]; - mul.f32 %f254, %f225, %f254; - -BB0_84: - setp.eq.f32 %p57, %f254, 0f00000000; - mov.f32 %f255, 0f00000000; - @%p57 bra BB0_86; - - rcp.rn.f32 %f255, %f254; - -BB0_86: - cvta.to.global.u64 %rd120, %rd1; - add.s64 %rd122, %rd120, %rd16; - ld.global.f32 %f227, [%rd122]; - fma.rn.f32 %f228, %f251, %f255, %f227; - st.global.f32 [%rd122], %f228; - cvta.to.global.u64 %rd123, %rd2; - add.s64 %rd124, %rd123, %rd16; - ld.global.f32 %f229, [%rd124]; - fma.rn.f32 %f230, %f252, %f255, %f229; - st.global.f32 [%rd124], %f230; - cvta.to.global.u64 %rd125, %rd3; - add.s64 %rd126, %rd125, %rd16; - ld.global.f32 %f231, [%rd126]; - fma.rn.f32 %f232, %f253, %f255, %f231; - st.global.f32 [%rd126], %f232; - -BB0_87: - ret; -} - - diff --git a/cuda/dmibulk_70.ptx b/cuda/dmibulk_70.ptx index d92bc41a7..d2433aecd 100644 --- a/cuda/dmibulk_70.ptx +++ b/cuda/dmibulk_70.ptx @@ -1,12 +1,12 @@ // // Generated by NVIDIA NVVM Compiler // -// Compiler Build ID: CL-23083092 -// Cuda compilation tools, release 9.1, V9.1.85 +// Compiler Build ID: CL-24817639 +// Cuda compilation tools, release 10.0, V10.0.130 // Based on LLVM 3.4svn // -.version 6.1 +.version 6.3 .target sm_70 .address_size 64 @@ -30,594 +30,625 @@ .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; + +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; + + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; + + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } diff --git a/cuda/dmibulk_wrapper.go b/cuda/dmibulk_wrapper.go index 7597ec7f4..24a90ae6b 100644 --- a/cuda/dmibulk_wrapper.go +++ b/cuda/dmibulk_wrapper.go @@ -5,68 +5,70 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for adddmibulk kernel var adddmibulk_code cu.Function // Stores the arguments for adddmibulk kernel invocation -type adddmibulk_args_t struct{ - arg_Hx unsafe.Pointer - arg_Hy unsafe.Pointer - arg_Hz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_aLUT2d unsafe.Pointer - arg_DLUT2d unsafe.Pointer - arg_regions unsafe.Pointer - arg_cx float32 - arg_cy float32 - arg_cz float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [18]unsafe.Pointer +type adddmibulk_args_t struct { + arg_Hx unsafe.Pointer + arg_Hy unsafe.Pointer + arg_Hz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_aLUT2d unsafe.Pointer + arg_DLUT2d unsafe.Pointer + arg_regions unsafe.Pointer + arg_cx float32 + arg_cy float32 + arg_cz float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + arg_OpenBC byte + argptr [19]unsafe.Pointer sync.Mutex } // Stores the arguments for adddmibulk kernel invocation var adddmibulk_args adddmibulk_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - adddmibulk_args.argptr[0] = unsafe.Pointer(&adddmibulk_args.arg_Hx) - adddmibulk_args.argptr[1] = unsafe.Pointer(&adddmibulk_args.arg_Hy) - adddmibulk_args.argptr[2] = unsafe.Pointer(&adddmibulk_args.arg_Hz) - adddmibulk_args.argptr[3] = unsafe.Pointer(&adddmibulk_args.arg_mx) - adddmibulk_args.argptr[4] = unsafe.Pointer(&adddmibulk_args.arg_my) - adddmibulk_args.argptr[5] = unsafe.Pointer(&adddmibulk_args.arg_mz) - adddmibulk_args.argptr[6] = unsafe.Pointer(&adddmibulk_args.arg_Ms_) - adddmibulk_args.argptr[7] = unsafe.Pointer(&adddmibulk_args.arg_Ms_mul) - adddmibulk_args.argptr[8] = unsafe.Pointer(&adddmibulk_args.arg_aLUT2d) - adddmibulk_args.argptr[9] = unsafe.Pointer(&adddmibulk_args.arg_DLUT2d) - adddmibulk_args.argptr[10] = unsafe.Pointer(&adddmibulk_args.arg_regions) - adddmibulk_args.argptr[11] = unsafe.Pointer(&adddmibulk_args.arg_cx) - adddmibulk_args.argptr[12] = unsafe.Pointer(&adddmibulk_args.arg_cy) - adddmibulk_args.argptr[13] = unsafe.Pointer(&adddmibulk_args.arg_cz) - adddmibulk_args.argptr[14] = unsafe.Pointer(&adddmibulk_args.arg_Nx) - adddmibulk_args.argptr[15] = unsafe.Pointer(&adddmibulk_args.arg_Ny) - adddmibulk_args.argptr[16] = unsafe.Pointer(&adddmibulk_args.arg_Nz) - adddmibulk_args.argptr[17] = unsafe.Pointer(&adddmibulk_args.arg_PBC) - } + adddmibulk_args.argptr[0] = unsafe.Pointer(&adddmibulk_args.arg_Hx) + adddmibulk_args.argptr[1] = unsafe.Pointer(&adddmibulk_args.arg_Hy) + adddmibulk_args.argptr[2] = unsafe.Pointer(&adddmibulk_args.arg_Hz) + adddmibulk_args.argptr[3] = unsafe.Pointer(&adddmibulk_args.arg_mx) + adddmibulk_args.argptr[4] = unsafe.Pointer(&adddmibulk_args.arg_my) + adddmibulk_args.argptr[5] = unsafe.Pointer(&adddmibulk_args.arg_mz) + adddmibulk_args.argptr[6] = unsafe.Pointer(&adddmibulk_args.arg_Ms_) + adddmibulk_args.argptr[7] = unsafe.Pointer(&adddmibulk_args.arg_Ms_mul) + adddmibulk_args.argptr[8] = unsafe.Pointer(&adddmibulk_args.arg_aLUT2d) + adddmibulk_args.argptr[9] = unsafe.Pointer(&adddmibulk_args.arg_DLUT2d) + adddmibulk_args.argptr[10] = unsafe.Pointer(&adddmibulk_args.arg_regions) + adddmibulk_args.argptr[11] = unsafe.Pointer(&adddmibulk_args.arg_cx) + adddmibulk_args.argptr[12] = unsafe.Pointer(&adddmibulk_args.arg_cy) + adddmibulk_args.argptr[13] = unsafe.Pointer(&adddmibulk_args.arg_cz) + adddmibulk_args.argptr[14] = unsafe.Pointer(&adddmibulk_args.arg_Nx) + adddmibulk_args.argptr[15] = unsafe.Pointer(&adddmibulk_args.arg_Ny) + adddmibulk_args.argptr[16] = unsafe.Pointer(&adddmibulk_args.arg_Nz) + adddmibulk_args.argptr[17] = unsafe.Pointer(&adddmibulk_args.arg_PBC) + adddmibulk_args.argptr[18] = unsafe.Pointer(&adddmibulk_args.arg_OpenBC) +} // Wrapper for adddmibulk CUDA kernel, asynchronous. -func k_adddmibulk_async ( Hx unsafe.Pointer, Hy unsafe.Pointer, Hz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, aLUT2d unsafe.Pointer, DLUT2d unsafe.Pointer, regions unsafe.Pointer, cx float32, cy float32, cz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_adddmibulk_async(Hx unsafe.Pointer, Hy unsafe.Pointer, Hz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, aLUT2d unsafe.Pointer, DLUT2d unsafe.Pointer, regions unsafe.Pointer, cx float32, cy float32, cz float32, Nx int, Ny int, Nz int, PBC byte, OpenBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("adddmibulk") } @@ -74,55 +76,54 @@ func k_adddmibulk_async ( Hx unsafe.Pointer, Hy unsafe.Pointer, Hz unsafe.Pointe adddmibulk_args.Lock() defer adddmibulk_args.Unlock() - if adddmibulk_code == 0{ + if adddmibulk_code == 0 { adddmibulk_code = fatbinLoad(adddmibulk_map, "adddmibulk") } - adddmibulk_args.arg_Hx = Hx - adddmibulk_args.arg_Hy = Hy - adddmibulk_args.arg_Hz = Hz - adddmibulk_args.arg_mx = mx - adddmibulk_args.arg_my = my - adddmibulk_args.arg_mz = mz - adddmibulk_args.arg_Ms_ = Ms_ - adddmibulk_args.arg_Ms_mul = Ms_mul - adddmibulk_args.arg_aLUT2d = aLUT2d - adddmibulk_args.arg_DLUT2d = DLUT2d - adddmibulk_args.arg_regions = regions - adddmibulk_args.arg_cx = cx - adddmibulk_args.arg_cy = cy - adddmibulk_args.arg_cz = cz - adddmibulk_args.arg_Nx = Nx - adddmibulk_args.arg_Ny = Ny - adddmibulk_args.arg_Nz = Nz - adddmibulk_args.arg_PBC = PBC - + adddmibulk_args.arg_Hx = Hx + adddmibulk_args.arg_Hy = Hy + adddmibulk_args.arg_Hz = Hz + adddmibulk_args.arg_mx = mx + adddmibulk_args.arg_my = my + adddmibulk_args.arg_mz = mz + adddmibulk_args.arg_Ms_ = Ms_ + adddmibulk_args.arg_Ms_mul = Ms_mul + adddmibulk_args.arg_aLUT2d = aLUT2d + adddmibulk_args.arg_DLUT2d = DLUT2d + adddmibulk_args.arg_regions = regions + adddmibulk_args.arg_cx = cx + adddmibulk_args.arg_cy = cy + adddmibulk_args.arg_cz = cz + adddmibulk_args.arg_Nx = Nx + adddmibulk_args.arg_Ny = Ny + adddmibulk_args.arg_Nz = Nz + adddmibulk_args.arg_PBC = PBC + adddmibulk_args.arg_OpenBC = OpenBC args := adddmibulk_args.argptr[:] cu.LaunchKernel(adddmibulk_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("adddmibulk") } } // maps compute capability on PTX code for adddmibulk kernel. -var adddmibulk_map = map[int]string{ 0: "" , -30: adddmibulk_ptx_30 , -35: adddmibulk_ptx_35 , -37: adddmibulk_ptx_37 , -50: adddmibulk_ptx_50 , -52: adddmibulk_ptx_52 , -53: adddmibulk_ptx_53 , -60: adddmibulk_ptx_60 , -61: adddmibulk_ptx_61 , -70: adddmibulk_ptx_70 , -75: adddmibulk_ptx_75 } +var adddmibulk_map = map[int]string{0: "", + 30: adddmibulk_ptx_30, + 35: adddmibulk_ptx_35, + 37: adddmibulk_ptx_37, + 50: adddmibulk_ptx_50, + 52: adddmibulk_ptx_52, + 53: adddmibulk_ptx_53, + 60: adddmibulk_ptx_60, + 61: adddmibulk_ptx_61, + 70: adddmibulk_ptx_70} // adddmibulk PTX code for various compute capabilities. -const( - adddmibulk_ptx_30 = ` +const ( + adddmibulk_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -147,33 +148,35 @@ const( .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; + .reg .pred %p<71>; .reg .b16 %rs<47>; - .reg .f32 %f<257>; + .reg .f32 %f<292>; .reg .b32 %r<238>; .reg .b64 %rd<121>; - ld.param.u64 %rd1, [adddmibulk_param_0]; - ld.param.u64 %rd2, [adddmibulk_param_1]; - ld.param.u64 %rd3, [adddmibulk_param_2]; - ld.param.u64 %rd4, [adddmibulk_param_3]; - ld.param.u64 %rd5, [adddmibulk_param_4]; - ld.param.u64 %rd6, [adddmibulk_param_5]; - ld.param.u64 %rd7, [adddmibulk_param_6]; - ld.param.f32 %f255, [adddmibulk_param_7]; - ld.param.u64 %rd8, [adddmibulk_param_8]; - ld.param.u64 %rd9, [adddmibulk_param_9]; - ld.param.u64 %rd10, [adddmibulk_param_10]; - ld.param.f32 %f75, [adddmibulk_param_11]; - ld.param.f32 %f76, [adddmibulk_param_12]; - ld.param.f32 %f77, [adddmibulk_param_13]; + ld.param.u64 %rd13, [adddmibulk_param_0]; + ld.param.u64 %rd14, [adddmibulk_param_1]; + ld.param.u64 %rd15, [adddmibulk_param_2]; + ld.param.u64 %rd16, [adddmibulk_param_3]; + ld.param.u64 %rd17, [adddmibulk_param_4]; + ld.param.u64 %rd18, [adddmibulk_param_5]; + ld.param.u64 %rd19, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd20, [adddmibulk_param_8]; + ld.param.u64 %rd21, [adddmibulk_param_9]; + ld.param.u64 %rd22, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; ld.param.u32 %r34, [adddmibulk_param_14]; ld.param.u32 %r35, [adddmibulk_param_15]; ld.param.u32 %r36, [adddmibulk_param_16]; + ld.param.u8 %rs17, [adddmibulk_param_18]; ld.param.u8 %rs16, [adddmibulk_param_17]; mov.u32 %r37, %ntid.x; mov.u32 %r38, %ctaid.x; @@ -192,32 +195,32 @@ const( or.pred %p3, %p1, %p2; setp.ge.s32 %p4, %r3, %r36; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - cvta.to.global.u64 %rd11, %rd10; - cvta.to.global.u64 %rd12, %rd6; - cvta.to.global.u64 %rd13, %rd5; - cvta.to.global.u64 %rd14, %rd4; + cvta.to.global.u64 %rd23, %rd22; + cvta.to.global.u64 %rd24, %rd18; + cvta.to.global.u64 %rd25, %rd17; + cvta.to.global.u64 %rd26, %rd16; mad.lo.s32 %r46, %r3, %r35, %r2; mad.lo.s32 %r47, %r46, %r34, %r1; - mul.wide.s32 %rd15, %r47, 4; - add.s64 %rd16, %rd14, %rd15; - cvt.s64.s32 %rd17, %r47; - add.s64 %rd18, %rd13, %rd15; - add.s64 %rd19, %rd12, %rd15; - add.s64 %rd20, %rd11, %rd17; - ld.global.u8 %rs1, [%rd20]; - ld.global.f32 %f1, [%rd16]; - ld.global.f32 %f2, [%rd18]; - mul.f32 %f78, %f2, %f2; - fma.rn.f32 %f79, %f1, %f1, %f78; - ld.global.f32 %f3, [%rd19]; - fma.rn.f32 %f80, %f3, %f3, %f79; - setp.eq.f32 %p6, %f80, 0f00000000; - @%p6 bra BB0_51; - - and.b16 %rs17, %rs16, 1; - setp.eq.b16 %p7, %rs17, 1; + mul.wide.s32 %rd27, %r47, 4; + add.s64 %rd28, %rd26, %rd27; + cvt.s64.s32 %rd29, %r47; + add.s64 %rd30, %rd25, %rd27; + add.s64 %rd31, %rd24, %rd27; + add.s64 %rd32, %rd23, %rd29; + ld.global.u8 %rs1, [%rd32]; + ld.global.f32 %f1, [%rd28]; + ld.global.f32 %f2, [%rd30]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.f32 %f3, [%rd31]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; + + and.b16 %rs18, %rs16, 1; + setp.eq.b16 %p7, %rs18, 1; add.s32 %r4, %r1, -1; @!%p7 bra BB0_4; bra.uni BB0_3; @@ -234,519 +237,555 @@ BB0_4: BB0_5: mad.lo.s32 %r8, %r46, %r34, %r232; - setp.eq.b16 %p8, %rs17, 1; + setp.eq.b16 %p8, %rs18, 1; setp.gt.s32 %p9, %r4, -1; or.pred %p10, %p9, %p8; - mov.f32 %f234, 0f00000000; - mov.f32 %f235, %f234; - mov.f32 %f236, %f234; + mov.f32 %f254, 0f00000000; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @!%p10 bra BB0_7; bra.uni BB0_6; BB0_6: - mul.wide.s32 %rd22, %r8, 4; - add.s64 %rd23, %rd14, %rd22; - ld.global.f32 %f234, [%rd23]; - add.s64 %rd25, %rd13, %rd22; - ld.global.f32 %f235, [%rd25]; - add.s64 %rd27, %rd12, %rd22; - ld.global.f32 %f236, [%rd27]; + mul.wide.s32 %rd34, %r8, 4; + add.s64 %rd35, %rd26, %rd34; + ld.global.f32 %f254, [%rd35]; + add.s64 %rd37, %rd25, %rd34; + ld.global.f32 %f255, [%rd37]; + add.s64 %rd39, %rd24, %rd34; + ld.global.f32 %f256, [%rd39]; BB0_7: - mul.f32 %f84, %f235, %f235; - fma.rn.f32 %f85, %f234, %f234, %f84; - fma.rn.f32 %f10, %f236, %f236, %f85; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; mov.u16 %rs41, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd29, %r8; - add.s64 %rd30, %rd11, %rd29; - ld.global.u8 %rs41, [%rd30]; + cvt.s64.s32 %rd41, %r8; + add.s64 %rd42, %rd23, %rd41; + ld.global.u8 %rs41, [%rd42]; BB0_9: - setp.eq.b16 %p12, %rs17, 1; cvt.u32.u16 %r64, %rs1; and.b32 %r65, %r64, 255; - setp.gt.u16 %p13, %rs41, %rs1; + setp.gt.u16 %p12, %rs41, %rs1; cvt.u32.u16 %r66, %rs41; and.b32 %r67, %r66, 255; - selp.b32 %r68, %r65, %r67, %p13; - selp.b32 %r69, %r67, %r65, %p13; + selp.b32 %r68, %r65, %r67, %p12; + selp.b32 %r69, %r67, %r65, %p12; add.s32 %r70, %r69, 1; mul.lo.s32 %r71, %r70, %r69; shr.u32 %r72, %r71, 1; add.s32 %r73, %r72, %r68; - cvta.to.global.u64 %rd31, %rd8; - mul.wide.s32 %rd32, %r73, 4; - add.s64 %rd33, %rd31, %rd32; - cvta.to.global.u64 %rd34, %rd9; - add.s64 %rd35, %rd34, %rd32; - ld.global.f32 %f86, [%rd33]; - add.f32 %f87, %f86, %f86; - ld.global.f32 %f88, [%rd35]; - div.rn.f32 %f89, %f88, %f87; - mul.f32 %f90, %f89, %f75; - fma.rn.f32 %f91, %f3, %f90, %f2; - mul.f32 %f92, %f2, %f90; - sub.f32 %f93, %f3, %f92; - selp.f32 %f94, %f1, %f234, %p11; - selp.f32 %f95, %f91, %f235, %p11; - selp.f32 %f96, %f93, %f236, %p11; - mul.f32 %f11, %f75, %f75; - div.rn.f32 %f97, %f87, %f11; - sub.f32 %f98, %f94, %f1; - sub.f32 %f99, %f95, %f2; - sub.f32 %f100, %f96, %f3; - fma.rn.f32 %f12, %f98, %f97, 0f00000000; - fma.rn.f32 %f101, %f97, %f99, 0f00000000; - fma.rn.f32 %f102, %f97, %f100, 0f00000000; - div.rn.f32 %f103, %f88, %f75; - mul.f32 %f104, %f103, %f96; - sub.f32 %f13, %f101, %f104; - fma.rn.f32 %f14, %f103, %f95, %f102; + cvta.to.global.u64 %rd43, %rd20; + mul.wide.s32 %rd44, %r73, 4; + add.s64 %rd1, %rd43, %rd44; + cvta.to.global.u64 %rd45, %rd21; + add.s64 %rd2, %rd45, %rd44; + setp.ne.s16 %p13, %rs17, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + ld.global.f32 %f101, [%rd1]; + add.f32 %f102, %f101, %f101; + ld.global.f32 %f103, [%rd2]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; + +BB0_11: + setp.eq.b16 %p17, %rs18, 1; add.s32 %r9, %r1, 1; - @!%p12 bra BB0_11; - bra.uni BB0_10; + @!%p17 bra BB0_13; + bra.uni BB0_12; -BB0_10: +BB0_12: rem.s32 %r78, %r9, %r34; add.s32 %r79, %r78, %r34; rem.s32 %r233, %r79, %r34; - bra.uni BB0_12; + bra.uni BB0_14; -BB0_11: +BB0_13: add.s32 %r80, %r34, -1; min.s32 %r233, %r9, %r80; -BB0_12: - setp.eq.b16 %p15, %rs17, 1; +BB0_14: + setp.eq.b16 %p18, %rs18, 1; mad.lo.s32 %r13, %r46, %r34, %r233; - setp.lt.s32 %p16, %r9, %r34; - or.pred %p17, %p16, %p15; - mov.f32 %f237, 0f00000000; - mov.f32 %f238, %f237; - mov.f32 %f239, %f237; - @!%p17 bra BB0_14; - bra.uni BB0_13; + setp.lt.s32 %p19, %r9, %r34; + or.pred %p20, %p19, %p18; + mov.f32 %f260, 0f00000000; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @!%p20 bra BB0_16; + bra.uni BB0_15; + +BB0_15: + mul.wide.s32 %rd47, %r13, 4; + add.s64 %rd48, %rd26, %rd47; + ld.global.f32 %f260, [%rd48]; + add.s64 %rd50, %rd25, %rd47; + ld.global.f32 %f261, [%rd50]; + add.s64 %rd52, %rd24, %rd47; + ld.global.f32 %f262, [%rd52]; -BB0_13: - mul.wide.s32 %rd37, %r13, 4; - add.s64 %rd38, %rd14, %rd37; - ld.global.f32 %f237, [%rd38]; - add.s64 %rd40, %rd13, %rd37; - ld.global.f32 %f238, [%rd40]; - add.s64 %rd42, %rd12, %rd37; - ld.global.f32 %f239, [%rd42]; - -BB0_14: - mul.f32 %f108, %f238, %f238; - fma.rn.f32 %f109, %f237, %f237, %f108; - fma.rn.f32 %f21, %f239, %f239, %f109; - setp.eq.f32 %p18, %f21, 0f00000000; +BB0_16: + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; mov.u16 %rs42, %rs1; - @%p18 bra BB0_16; + @%p21 bra BB0_18; - cvt.s64.s32 %rd44, %r13; - add.s64 %rd45, %rd11, %rd44; - ld.global.u8 %rs42, [%rd45]; + cvt.s64.s32 %rd54, %r13; + add.s64 %rd55, %rd23, %rd54; + ld.global.u8 %rs42, [%rd55]; -BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs39, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs42, %rs1; +BB0_18: + setp.gt.u16 %p22, %rs42, %rs1; cvt.u32.u16 %r92, %rs42; and.b32 %r93, %r92, 255; - selp.b32 %r94, %r65, %r93, %p19; - selp.b32 %r95, %r93, %r65, %p19; + selp.b32 %r94, %r65, %r93, %p22; + selp.b32 %r95, %r93, %r65, %p22; add.s32 %r96, %r95, 1; mul.lo.s32 %r97, %r96, %r95; shr.u32 %r98, %r97, 1; add.s32 %r99, %r98, %r94; - mul.wide.s32 %rd47, %r99, 4; - add.s64 %rd48, %rd31, %rd47; - add.s64 %rd50, %rd34, %rd47; - ld.global.f32 %f110, [%rd48]; - add.f32 %f111, %f110, %f110; - ld.global.f32 %f112, [%rd50]; - div.rn.f32 %f113, %f112, %f111; - mul.f32 %f114, %f113, %f233; - mul.f32 %f115, %f3, %f114; - sub.f32 %f116, %f2, %f115; - fma.rn.f32 %f117, %f2, %f114, %f3; - selp.f32 %f118, %f1, %f237, %p18; - selp.f32 %f119, %f116, %f238, %p18; - selp.f32 %f120, %f117, %f239, %p18; - div.rn.f32 %f121, %f111, %f11; - sub.f32 %f122, %f118, %f1; - sub.f32 %f123, %f119, %f2; - sub.f32 %f124, %f120, %f3; - fma.rn.f32 %f22, %f122, %f121, %f12; - fma.rn.f32 %f125, %f121, %f123, %f13; - fma.rn.f32 %f126, %f121, %f124, %f14; - div.rn.f32 %f127, %f112, %f233; - fma.rn.f32 %f23, %f127, %f120, %f125; - mul.f32 %f128, %f127, %f119; - sub.f32 %f24, %f126, %f128; - and.b16 %rs6, %rs39, 2; - setp.eq.s16 %p21, %rs6, 0; + mul.wide.s32 %rd57, %r99, 4; + add.s64 %rd3, %rd43, %rd57; + add.s64 %rd4, %rd45, %rd57; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + ld.global.f32 %f126, [%rd3]; + add.f32 %f127, %f126, %f126; + ld.global.f32 %f128, [%rd4]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs6, %rs16, 2; + setp.eq.s16 %p27, %rs6, 0; add.s32 %r14, %r2, -1; - @%p21 bra BB0_18; + @%p27 bra BB0_22; rem.s32 %r104, %r14, %r35; add.s32 %r105, %r104, %r35; rem.s32 %r234, %r105, %r35; - bra.uni BB0_19; + bra.uni BB0_23; -BB0_18: +BB0_22: mov.u32 %r106, 0; max.s32 %r234, %r14, %r106; -BB0_19: +BB0_23: mad.lo.s32 %r111, %r3, %r35, %r234; mad.lo.s32 %r18, %r111, %r34, %r1; - setp.lt.s32 %p23, %r14, 0; - mov.f32 %f240, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; - @%p24 bra BB0_21; - - mul.wide.s32 %rd52, %r18, 4; - add.s64 %rd53, %rd14, %rd52; - ld.global.f32 %f240, [%rd53]; - add.s64 %rd55, %rd13, %rd52; - ld.global.f32 %f241, [%rd55]; - add.s64 %rd57, %rd12, %rd52; - ld.global.f32 %f242, [%rd57]; - -BB0_21: - mul.f32 %f132, %f241, %f241; - fma.rn.f32 %f133, %f240, %f240, %f132; - fma.rn.f32 %f31, %f242, %f242, %f133; - setp.eq.f32 %p25, %f31, 0f00000000; + setp.lt.s32 %p29, %r14, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd60, %r18, 4; + add.s64 %rd61, %rd26, %rd60; + ld.global.f32 %f266, [%rd61]; + add.s64 %rd63, %rd25, %rd60; + ld.global.f32 %f267, [%rd63]; + add.s64 %rd65, %rd24, %rd60; + ld.global.f32 %f268, [%rd65]; + +BB0_25: + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; mov.u16 %rs43, %rs1; - @%p25 bra BB0_23; + @%p31 bra BB0_27; - cvt.s64.s32 %rd59, %r18; - add.s64 %rd60, %rd11, %rd59; - ld.global.u8 %rs43, [%rd60]; + cvt.s64.s32 %rd67, %r18; + add.s64 %rd68, %rd23, %rd67; + ld.global.u8 %rs43, [%rd68]; -BB0_23: - setp.gt.u16 %p26, %rs43, %rs1; +BB0_27: + setp.gt.u16 %p32, %rs43, %rs1; cvt.u32.u16 %r118, %rs43; and.b32 %r119, %r118, 255; - selp.b32 %r120, %r65, %r119, %p26; - selp.b32 %r121, %r119, %r65, %p26; + selp.b32 %r120, %r65, %r119, %p32; + selp.b32 %r121, %r119, %r65, %p32; add.s32 %r122, %r121, 1; mul.lo.s32 %r123, %r122, %r121; shr.u32 %r124, %r123, 1; add.s32 %r125, %r124, %r120; - mul.wide.s32 %rd62, %r125, 4; - add.s64 %rd63, %rd31, %rd62; - add.s64 %rd65, %rd34, %rd62; - ld.global.f32 %f134, [%rd63]; - add.f32 %f135, %f134, %f134; - ld.global.f32 %f136, [%rd65]; - div.rn.f32 %f137, %f136, %f135; - mul.f32 %f138, %f137, %f76; - mul.f32 %f139, %f3, %f138; - sub.f32 %f140, %f1, %f139; - fma.rn.f32 %f141, %f1, %f138, %f3; - selp.f32 %f142, %f140, %f240, %p25; - selp.f32 %f143, %f2, %f241, %p25; - selp.f32 %f144, %f141, %f242, %p25; - mul.f32 %f32, %f76, %f76; - div.rn.f32 %f145, %f135, %f32; - sub.f32 %f146, %f142, %f1; - sub.f32 %f147, %f143, %f2; - sub.f32 %f148, %f144, %f3; - fma.rn.f32 %f149, %f145, %f146, %f22; - fma.rn.f32 %f33, %f147, %f145, %f23; - fma.rn.f32 %f150, %f145, %f148, %f24; - div.rn.f32 %f151, %f136, %f76; - fma.rn.f32 %f34, %f151, %f144, %f149; - mul.f32 %f152, %f151, %f142; - sub.f32 %f35, %f150, %f152; + mul.wide.s32 %rd70, %r125, 4; + add.s64 %rd5, %rd43, %rd70; + add.s64 %rd6, %rd45, %rd70; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + ld.global.f32 %f151, [%rd5]; + add.f32 %f152, %f151, %f151; + ld.global.f32 %f153, [%rd6]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: add.s32 %r19, %r2, 1; - @%p21 bra BB0_25; + @%p27 bra BB0_31; rem.s32 %r130, %r19, %r35; add.s32 %r131, %r130, %r35; rem.s32 %r235, %r131, %r35; - bra.uni BB0_26; + bra.uni BB0_32; -BB0_25: +BB0_31: add.s32 %r132, %r35, -1; min.s32 %r235, %r19, %r132; -BB0_26: +BB0_32: + shr.u16 %rs30, %rs16, 1; + and.b16 %rs31, %rs30, 1; + setp.eq.b16 %p38, %rs31, 1; + not.pred %p39, %p38; mad.lo.s32 %r137, %r3, %r35, %r235; mad.lo.s32 %r23, %r137, %r34, %r1; - setp.ge.s32 %p29, %r19, %r35; - mov.f32 %f243, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p31 bra BB0_28; - - mul.wide.s32 %rd67, %r23, 4; - add.s64 %rd68, %rd14, %rd67; - ld.global.f32 %f243, [%rd68]; - add.s64 %rd70, %rd13, %rd67; - ld.global.f32 %f244, [%rd70]; - add.s64 %rd72, %rd12, %rd67; - ld.global.f32 %f245, [%rd72]; - -BB0_28: - mul.f32 %f156, %f244, %f244; - fma.rn.f32 %f157, %f243, %f243, %f156; - fma.rn.f32 %f42, %f245, %f245, %f157; - setp.eq.f32 %p32, %f42, 0f00000000; + setp.ge.s32 %p40, %r19, %r35; + mov.f32 %f272, 0f00000000; + and.pred %p41, %p40, %p39; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p41 bra BB0_34; + + mul.wide.s32 %rd73, %r23, 4; + add.s64 %rd74, %rd26, %rd73; + ld.global.f32 %f272, [%rd74]; + add.s64 %rd76, %rd25, %rd73; + ld.global.f32 %f273, [%rd76]; + add.s64 %rd78, %rd24, %rd73; + ld.global.f32 %f274, [%rd78]; + +BB0_34: + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p42, %f49, 0f00000000; mov.u16 %rs44, %rs1; - @%p32 bra BB0_30; + @%p42 bra BB0_36; - cvt.s64.s32 %rd74, %r23; - add.s64 %rd75, %rd11, %rd74; - ld.global.u8 %rs44, [%rd75]; + cvt.s64.s32 %rd80, %r23; + add.s64 %rd81, %rd23, %rd80; + ld.global.u8 %rs44, [%rd81]; -BB0_30: - setp.gt.u16 %p33, %rs44, %rs1; +BB0_36: + setp.gt.u16 %p43, %rs44, %rs1; cvt.u32.u16 %r144, %rs44; and.b32 %r145, %r144, 255; - selp.b32 %r146, %r65, %r145, %p33; - selp.b32 %r147, %r145, %r65, %p33; + selp.b32 %r146, %r65, %r145, %p43; + selp.b32 %r147, %r145, %r65, %p43; add.s32 %r148, %r147, 1; mul.lo.s32 %r149, %r148, %r147; shr.u32 %r150, %r149, 1; add.s32 %r151, %r150, %r146; - mul.wide.s32 %rd77, %r151, 4; - add.s64 %rd78, %rd31, %rd77; - add.s64 %rd80, %rd34, %rd77; - ld.global.f32 %f158, [%rd78]; - add.f32 %f159, %f158, %f158; - ld.global.f32 %f160, [%rd80]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f76; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f243, %p32; - selp.f32 %f167, %f2, %f244, %p32; - selp.f32 %f168, %f165, %f245, %p32; - div.rn.f32 %f169, %f159, %f32; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f34; - fma.rn.f32 %f253, %f171, %f169, %f33; - fma.rn.f32 %f174, %f169, %f172, %f35; - div.rn.f32 %f175, %f160, %f76; - mul.f32 %f176, %f175, %f168; - sub.f32 %f252, %f173, %f176; - fma.rn.f32 %f254, %f175, %f166, %f174; - setp.eq.s32 %p35, %r36, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs40, [adddmibulk_param_17]; - and.b16 %rs11, %rs40, 4; - setp.eq.s16 %p36, %rs11, 0; + mul.wide.s32 %rd83, %r151, 4; + add.s64 %rd7, %rd43, %rd83; + add.s64 %rd8, %rd45, %rd83; + and.pred %p46, %p42, %p13; + @%p46 bra BB0_38; + + ld.global.f32 %f176, [%rd7]; + add.f32 %f177, %f176, %f176; + ld.global.f32 %f178, [%rd8]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p42; + selp.f32 %f185, %f2, %f273, %p42; + selp.f32 %f186, %f183, %f274, %p42; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; + +BB0_38: + setp.eq.s32 %p48, %r36, 1; + @%p48 bra BB0_57; + + and.b16 %rs11, %rs16, 4; + setp.eq.s16 %p49, %rs11, 0; add.s32 %r24, %r3, -1; - @%p36 bra BB0_33; + @%p49 bra BB0_41; rem.s32 %r156, %r24, %r36; add.s32 %r157, %r156, %r36; rem.s32 %r236, %r157, %r36; - bra.uni BB0_34; + bra.uni BB0_42; -BB0_33: +BB0_41: mov.u32 %r158, 0; max.s32 %r236, %r24, %r158; -BB0_34: +BB0_42: mad.lo.s32 %r163, %r236, %r35, %r2; mad.lo.s32 %r28, %r163, %r34, %r1; - setp.lt.s32 %p38, %r24, 0; - mov.f32 %f246, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p39 bra BB0_36; - - mul.wide.s32 %rd82, %r28, 4; - add.s64 %rd83, %rd14, %rd82; - ld.global.f32 %f246, [%rd83]; - add.s64 %rd85, %rd13, %rd82; - ld.global.f32 %f247, [%rd85]; - add.s64 %rd87, %rd12, %rd82; - ld.global.f32 %f248, [%rd87]; - -BB0_36: - mul.f32 %f180, %f247, %f247; - fma.rn.f32 %f181, %f246, %f246, %f180; - fma.rn.f32 %f52, %f248, %f248, %f181; - setp.eq.f32 %p40, %f52, 0f00000000; + setp.lt.s32 %p51, %r24, 0; + mov.f32 %f278, 0f00000000; + and.pred %p52, %p51, %p49; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p52 bra BB0_44; + + mul.wide.s32 %rd86, %r28, 4; + add.s64 %rd87, %rd26, %rd86; + ld.global.f32 %f278, [%rd87]; + add.s64 %rd89, %rd25, %rd86; + ld.global.f32 %f279, [%rd89]; + add.s64 %rd91, %rd24, %rd86; + ld.global.f32 %f280, [%rd91]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p53, %f62, 0f00000000; mov.u16 %rs45, %rs1; - @%p40 bra BB0_38; + @%p53 bra BB0_46; - cvt.s64.s32 %rd89, %r28; - add.s64 %rd90, %rd11, %rd89; - ld.global.u8 %rs45, [%rd90]; + cvt.s64.s32 %rd93, %r28; + add.s64 %rd94, %rd23, %rd93; + ld.global.u8 %rs45, [%rd94]; -BB0_38: - setp.gt.u16 %p41, %rs45, %rs1; +BB0_46: + setp.gt.u16 %p54, %rs45, %rs1; cvt.u32.u16 %r170, %rs45; and.b32 %r171, %r170, 255; - selp.b32 %r172, %r65, %r171, %p41; - selp.b32 %r173, %r171, %r65, %p41; + selp.b32 %r172, %r65, %r171, %p54; + selp.b32 %r173, %r171, %r65, %p54; add.s32 %r174, %r173, 1; mul.lo.s32 %r175, %r174, %r173; shr.u32 %r176, %r175, 1; add.s32 %r177, %r176, %r172; - mul.wide.s32 %rd92, %r177, 4; - add.s64 %rd93, %rd31, %rd92; - add.s64 %rd95, %rd34, %rd92; - ld.global.f32 %f182, [%rd93]; - add.f32 %f183, %f182, %f182; - ld.global.f32 %f184, [%rd95]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f77; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f246, %p40; - selp.f32 %f191, %f189, %f247, %p40; - selp.f32 %f192, %f3, %f248, %p40; - mul.f32 %f53, %f77, %f77; - div.rn.f32 %f193, %f183, %f53; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f252; - fma.rn.f32 %f198, %f193, %f195, %f253; - fma.rn.f32 %f54, %f196, %f193, %f254; - div.rn.f32 %f199, %f184, %f77; - mul.f32 %f200, %f199, %f191; - sub.f32 %f55, %f197, %f200; - fma.rn.f32 %f56, %f199, %f190, %f198; + mul.wide.s32 %rd96, %r177, 4; + add.s64 %rd9, %rd43, %rd96; + add.s64 %rd10, %rd45, %rd96; + and.pred %p57, %p53, %p13; + @%p57 bra BB0_48; + + ld.global.f32 %f201, [%rd9]; + add.f32 %f202, %f201, %f201; + ld.global.f32 %f203, [%rd10]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p53; + selp.f32 %f210, %f208, %f279, %p53; + selp.f32 %f211, %f3, %f280, %p53; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; + +BB0_48: add.s32 %r29, %r3, 1; - @%p36 bra BB0_40; + @%p49 bra BB0_50; rem.s32 %r182, %r29, %r36; add.s32 %r183, %r182, %r36; rem.s32 %r237, %r183, %r36; - bra.uni BB0_41; + bra.uni BB0_51; -BB0_40: +BB0_50: add.s32 %r184, %r36, -1; min.s32 %r237, %r29, %r184; -BB0_41: +BB0_51: mad.lo.s32 %r189, %r237, %r35, %r2; mad.lo.s32 %r33, %r189, %r34, %r1; - setp.ge.s32 %p44, %r29, %r36; - mov.f32 %f249, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p46 bra BB0_43; - - mul.wide.s32 %rd97, %r33, 4; - add.s64 %rd98, %rd14, %rd97; - ld.global.f32 %f251, [%rd98]; - add.s64 %rd100, %rd13, %rd97; - ld.global.f32 %f250, [%rd100]; - add.s64 %rd102, %rd12, %rd97; - ld.global.f32 %f249, [%rd102]; - -BB0_43: - mul.f32 %f204, %f251, %f251; - fma.rn.f32 %f205, %f250, %f250, %f204; - fma.rn.f32 %f63, %f249, %f249, %f205; - setp.eq.f32 %p47, %f63, 0f00000000; + setp.ge.s32 %p60, %r29, %r36; + mov.f32 %f284, 0f00000000; + and.pred %p62, %p60, %p49; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p62 bra BB0_53; + + mul.wide.s32 %rd99, %r33, 4; + add.s64 %rd100, %rd26, %rd99; + ld.global.f32 %f286, [%rd100]; + add.s64 %rd102, %rd25, %rd99; + ld.global.f32 %f285, [%rd102]; + add.s64 %rd104, %rd24, %rd99; + ld.global.f32 %f284, [%rd104]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p63, %f75, 0f00000000; mov.u16 %rs46, %rs1; - @%p47 bra BB0_45; + @%p63 bra BB0_55; - cvt.s64.s32 %rd104, %r33; - add.s64 %rd105, %rd11, %rd104; - ld.global.u8 %rs46, [%rd105]; + cvt.s64.s32 %rd106, %r33; + add.s64 %rd107, %rd23, %rd106; + ld.global.u8 %rs46, [%rd107]; -BB0_45: - setp.gt.u16 %p48, %rs46, %rs1; +BB0_55: + setp.gt.u16 %p64, %rs46, %rs1; cvt.u32.u16 %r196, %rs46; and.b32 %r197, %r196, 255; - selp.b32 %r198, %r65, %r197, %p48; - selp.b32 %r199, %r197, %r65, %p48; + selp.b32 %r198, %r65, %r197, %p64; + selp.b32 %r199, %r197, %r65, %p64; add.s32 %r200, %r199, 1; mul.lo.s32 %r201, %r200, %r199; shr.u32 %r202, %r201, 1; add.s32 %r203, %r202, %r198; - mul.wide.s32 %rd107, %r203, 4; - add.s64 %rd108, %rd31, %rd107; - add.s64 %rd110, %rd34, %rd107; - ld.global.f32 %f206, [%rd108]; - add.f32 %f207, %f206, %f206; - ld.global.f32 %f208, [%rd110]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f77; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f249, %p47; - selp.f32 %f215, %f213, %f250, %p47; - selp.f32 %f216, %f212, %f251, %p47; - div.rn.f32 %f217, %f207, %f53; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f55; - fma.rn.f32 %f222, %f217, %f219, %f56; - fma.rn.f32 %f254, %f220, %f217, %f54; - div.rn.f32 %f223, %f208, %f77; - fma.rn.f32 %f252, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f253, %f222, %f224; - -BB0_46: - setp.eq.s64 %p50, %rd7, 0; - @%p50 bra BB0_48; - - cvta.to.global.u64 %rd111, %rd7; - add.s64 %rd113, %rd111, %rd15; - ld.global.f32 %f225, [%rd113]; - mul.f32 %f255, %f225, %f255; - -BB0_48: - setp.eq.f32 %p51, %f255, 0f00000000; - mov.f32 %f256, 0f00000000; - @%p51 bra BB0_50; - - rcp.rn.f32 %f256, %f255; - -BB0_50: - cvta.to.global.u64 %rd114, %rd1; - add.s64 %rd116, %rd114, %rd15; - ld.global.f32 %f227, [%rd116]; - fma.rn.f32 %f228, %f252, %f256, %f227; - st.global.f32 [%rd116], %f228; - cvta.to.global.u64 %rd117, %rd2; - add.s64 %rd118, %rd117, %rd15; - ld.global.f32 %f229, [%rd118]; - fma.rn.f32 %f230, %f253, %f256, %f229; - st.global.f32 [%rd118], %f230; - cvta.to.global.u64 %rd119, %rd3; - add.s64 %rd120, %rd119, %rd15; - ld.global.f32 %f231, [%rd120]; - fma.rn.f32 %f232, %f254, %f256, %f231; - st.global.f32 [%rd120], %f232; - -BB0_51: + mul.wide.s32 %rd109, %r203, 4; + add.s64 %rd11, %rd43, %rd109; + add.s64 %rd12, %rd45, %rd109; + and.pred %p67, %p63, %p13; + @%p67 bra BB0_57; + + ld.global.f32 %f226, [%rd11]; + add.f32 %f227, %f226, %f226; + ld.global.f32 %f228, [%rd12]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p63; + selp.f32 %f235, %f233, %f285, %p63; + selp.f32 %f236, %f232, %f286, %p63; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p69, %rd19, 0; + @%p69 bra BB0_59; + + cvta.to.global.u64 %rd111, %rd19; + add.s64 %rd113, %rd111, %rd27; + ld.global.f32 %f246, [%rd113]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p70, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p70 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd114, %rd13; + add.s64 %rd116, %rd114, %rd27; + ld.global.f32 %f248, [%rd116]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd116], %f249; + cvta.to.global.u64 %rd117, %rd14; + add.s64 %rd118, %rd117, %rd27; + ld.global.f32 %f250, [%rd118]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd118], %f251; + cvta.to.global.u64 %rd119, %rd15; + add.s64 %rd120, %rd119, %rd27; + ld.global.f32 %f252, [%rd120]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd120], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_35 = ` + adddmibulk_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -771,600 +810,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_37 = ` + adddmibulk_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1389,600 +1459,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_50 = ` + adddmibulk_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -2007,600 +2108,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_52 = ` + adddmibulk_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -2625,600 +2757,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_53 = ` + adddmibulk_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -3243,600 +3406,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; - -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; -BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; +BB0_38: + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; + + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_60 = ` + adddmibulk_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -3861,600 +4055,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_61 = ` + adddmibulk_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -4479,600 +4704,631 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; + mov.u16 %rs42, %rs1; + @%p62 bra BB0_55; + + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; + +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; + and.b32 %r115, %r114, 255; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; + add.s32 %r118, %r117, 1; + mul.lo.s32 %r119, %r118, %r117; + shr.u32 %r120, %r119, 1; + add.s32 %r121, %r120, %r116; + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - adddmibulk_ptx_70 = ` + adddmibulk_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -5097,1215 +5353,628 @@ BB0_51: .param .u32 adddmibulk_param_14, .param .u32 adddmibulk_param_15, .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 + .param .u8 adddmibulk_param_17, + .param .u8 adddmibulk_param_18 ) { - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; + .reg .pred %p<70>; + .reg .b16 %rs<43>; + .reg .f32 %f<292>; .reg .b32 %r<128>; .reg .b64 %rd<87>; - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; + ld.param.u64 %rd9, [adddmibulk_param_0]; + ld.param.u64 %rd10, [adddmibulk_param_1]; + ld.param.u64 %rd11, [adddmibulk_param_2]; + ld.param.u64 %rd13, [adddmibulk_param_3]; + ld.param.u64 %rd14, [adddmibulk_param_4]; + ld.param.u64 %rd15, [adddmibulk_param_5]; + ld.param.u64 %rd12, [adddmibulk_param_6]; + ld.param.f32 %f290, [adddmibulk_param_7]; + ld.param.u64 %rd16, [adddmibulk_param_8]; + ld.param.u64 %rd17, [adddmibulk_param_9]; + ld.param.u64 %rd18, [adddmibulk_param_10]; + ld.param.f32 %f87, [adddmibulk_param_11]; + ld.param.f32 %f88, [adddmibulk_param_12]; + ld.param.f32 %f89, [adddmibulk_param_13]; + ld.param.u32 %r43, [adddmibulk_param_14]; + ld.param.u32 %r44, [adddmibulk_param_15]; + ld.param.u32 %r45, [adddmibulk_param_16]; + ld.param.u8 %rs18, [adddmibulk_param_18]; ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; + cvta.to.global.u64 %rd1, %rd17; + cvta.to.global.u64 %rd2, %rd16; + cvta.to.global.u64 %rd3, %rd18; + cvta.to.global.u64 %rd4, %rd15; + cvta.to.global.u64 %rd5, %rd14; + cvta.to.global.u64 %rd6, %rd13; + mov.u32 %r46, %ntid.x; + mov.u32 %r47, %ctaid.x; + mov.u32 %r48, %tid.x; + mad.lo.s32 %r1, %r46, %r47, %r48; + mov.u32 %r49, %ntid.y; + mov.u32 %r50, %ctaid.y; + mov.u32 %r51, %tid.y; + mad.lo.s32 %r2, %r49, %r50, %r51; + mov.u32 %r52, %ntid.z; + mov.u32 %r53, %ctaid.z; + mov.u32 %r54, %tid.z; + mad.lo.s32 %r3, %r52, %r53, %r54; + setp.ge.s32 %p1, %r2, %r44; + setp.ge.s32 %p2, %r1, %r43; or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; + setp.ge.s32 %p4, %r3, %r45; or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; + @%p5 bra BB0_62; - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; + mul.lo.s32 %r4, %r3, %r44; + add.s32 %r55, %r4, %r2; + mul.lo.s32 %r5, %r55, %r43; add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; + mul.wide.s32 %rd19, %r6, 4; + add.s64 %rd20, %rd6, %rd19; + cvt.s64.s32 %rd21, %r6; + add.s64 %rd22, %rd5, %rd19; + add.s64 %rd23, %rd4, %rd19; + add.s64 %rd24, %rd3, %rd21; + ld.global.nc.u8 %rs1, [%rd24]; + cvt.u32.u16 %r56, %rs1; + and.b32 %r7, %r56, 255; + ld.global.nc.f32 %f1, [%rd20]; + ld.global.nc.f32 %f2, [%rd22]; + mul.f32 %f90, %f2, %f2; + fma.rn.f32 %f91, %f1, %f1, %f90; + ld.global.nc.f32 %f3, [%rd23]; + fma.rn.f32 %f92, %f3, %f3, %f91; + setp.eq.f32 %p6, %f92, 0f00000000; + @%p6 bra BB0_62; and.b16 %rs2, %rs17, 1; setp.eq.s16 %p7, %rs2, 0; add.s32 %r8, %r1, -1; @%p7 bra BB0_4; - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; + rem.s32 %r57, %r8, %r43; + add.s32 %r58, %r57, %r43; + rem.s32 %r122, %r58, %r43; bra.uni BB0_5; BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; + mov.u32 %r59, 0; + max.s32 %r122, %r8, %r59; BB0_5: add.s32 %r12, %r122, %r5; setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; + mov.f32 %f254, 0f00000000; and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; + mov.f32 %f255, %f254; + mov.f32 %f256, %f254; @%p10 bra BB0_7; - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; + mul.wide.s32 %rd25, %r12, 4; + add.s64 %rd26, %rd6, %rd25; + ld.global.nc.f32 %f254, [%rd26]; + add.s64 %rd27, %rd5, %rd25; + ld.global.nc.f32 %f255, [%rd27]; + add.s64 %rd28, %rd4, %rd25; + ld.global.nc.f32 %f256, [%rd28]; BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; + mul.f32 %f96, %f255, %f255; + fma.rn.f32 %f97, %f254, %f254, %f96; + fma.rn.f32 %f10, %f256, %f256, %f97; setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; + mov.u16 %rs37, %rs1; @%p11 bra BB0_9; - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; + cvt.s64.s32 %rd29, %r12; + add.s64 %rd30, %rd3, %rd29; + ld.global.nc.u8 %rs37, [%rd30]; BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; + setp.gt.u16 %p12, %rs37, %rs1; + cvt.u32.u16 %r60, %rs37; + and.b32 %r61, %r60, 255; + selp.b32 %r62, %r7, %r61, %p12; + selp.b32 %r63, %r61, %r7, %p12; + add.s32 %r64, %r63, 1; + mul.lo.s32 %r65, %r64, %r63; + shr.u32 %r66, %r65, 1; + add.s32 %r13, %r66, %r62; + setp.ne.s16 %p13, %rs18, 0; + mov.f32 %f263, 0f00000000; + and.pred %p15, %p11, %p13; + mov.f32 %f264, %f263; + mov.f32 %f265, %f263; + @%p15 bra BB0_11; + + mul.wide.s32 %rd31, %r13, 4; + add.s64 %rd32, %rd2, %rd31; + ld.global.nc.f32 %f101, [%rd32]; + add.f32 %f102, %f101, %f101; + add.s64 %rd33, %rd1, %rd31; + ld.global.nc.f32 %f103, [%rd33]; + div.rn.f32 %f104, %f103, %f102; + mul.f32 %f105, %f104, %f87; + fma.rn.f32 %f106, %f3, %f105, %f2; + mul.f32 %f107, %f2, %f105; + sub.f32 %f108, %f3, %f107; + selp.f32 %f109, %f1, %f254, %p11; + selp.f32 %f110, %f106, %f255, %p11; + selp.f32 %f111, %f108, %f256, %p11; + mul.f32 %f112, %f87, %f87; + div.rn.f32 %f113, %f102, %f112; + sub.f32 %f114, %f109, %f1; + sub.f32 %f115, %f110, %f2; + sub.f32 %f116, %f111, %f3; + fma.rn.f32 %f263, %f114, %f113, 0f00000000; + fma.rn.f32 %f117, %f115, %f113, 0f00000000; + fma.rn.f32 %f118, %f116, %f113, 0f00000000; + div.rn.f32 %f119, %f103, %f87; + mul.f32 %f120, %f111, %f119; + sub.f32 %f264, %f117, %f120; + fma.rn.f32 %f265, %f110, %f119, %f118; BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; + add.s32 %r14, %r1, 1; + @%p7 bra BB0_13; -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; + rem.s32 %r67, %r14, %r43; + add.s32 %r68, %r67, %r43; + rem.s32 %r123, %r68, %r43; + bra.uni BB0_14; -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; +BB0_13: + add.s32 %r69, %r43, -1; + min.s32 %r123, %r14, %r69; - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; +BB0_14: + add.s32 %r18, %r123, %r5; + setp.ge.s32 %p18, %r14, %r43; + mov.f32 %f260, 0f00000000; + and.pred %p20, %p18, %p7; + mov.f32 %f261, %f260; + mov.f32 %f262, %f260; + @%p20 bra BB0_16; + + mul.wide.s32 %rd34, %r18, 4; + add.s64 %rd35, %rd6, %rd34; + ld.global.nc.f32 %f260, [%rd35]; + add.s64 %rd36, %rd5, %rd34; + ld.global.nc.f32 %f261, [%rd36]; + add.s64 %rd37, %rd4, %rd34; + ld.global.nc.f32 %f262, [%rd37]; BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; + mul.f32 %f124, %f261, %f261; + fma.rn.f32 %f125, %f260, %f260, %f124; + fma.rn.f32 %f23, %f262, %f262, %f125; + setp.eq.f32 %p21, %f23, 0f00000000; + mov.u16 %rs38, %rs1; @%p21 bra BB0_18; - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; + cvt.s64.s32 %rd38, %r18; + add.s64 %rd39, %rd3, %rd38; + ld.global.nc.u8 %rs38, [%rd39]; BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; + setp.gt.u16 %p22, %rs38, %rs1; + cvt.u32.u16 %r70, %rs38; + and.b32 %r71, %r70, 255; + selp.b32 %r72, %r7, %r71, %p22; + selp.b32 %r73, %r71, %r7, %p22; + add.s32 %r74, %r73, 1; + mul.lo.s32 %r75, %r74, %r73; + shr.u32 %r76, %r75, 1; + add.s32 %r19, %r76, %r72; + and.pred %p25, %p21, %p13; + @%p25 bra BB0_20; + + mul.wide.s32 %rd40, %r19, 4; + add.s64 %rd41, %rd2, %rd40; + ld.global.nc.f32 %f126, [%rd41]; + add.f32 %f127, %f126, %f126; + add.s64 %rd42, %rd1, %rd40; + ld.global.nc.f32 %f128, [%rd42]; + div.rn.f32 %f129, %f128, %f127; + mul.f32 %f130, %f129, %f87; + mul.f32 %f131, %f3, %f130; + sub.f32 %f132, %f2, %f131; + fma.rn.f32 %f133, %f2, %f130, %f3; + selp.f32 %f134, %f1, %f260, %p21; + selp.f32 %f135, %f132, %f261, %p21; + selp.f32 %f136, %f133, %f262, %p21; + mul.f32 %f137, %f87, %f87; + div.rn.f32 %f138, %f127, %f137; + sub.f32 %f139, %f134, %f1; + sub.f32 %f140, %f135, %f2; + sub.f32 %f141, %f136, %f3; + fma.rn.f32 %f263, %f139, %f138, %f263; + fma.rn.f32 %f142, %f140, %f138, %f264; + fma.rn.f32 %f143, %f141, %f138, %f265; + div.rn.f32 %f144, %f128, %f87; + fma.rn.f32 %f264, %f136, %f144, %f142; + mul.f32 %f145, %f135, %f144; + sub.f32 %f265, %f143, %f145; + +BB0_20: + and.b16 %rs7, %rs17, 2; + setp.eq.s16 %p27, %rs7, 0; + add.s32 %r20, %r2, -1; + @%p27 bra BB0_22; + + rem.s32 %r77, %r20, %r44; + add.s32 %r78, %r77, %r44; + rem.s32 %r124, %r78, %r44; + bra.uni BB0_23; + +BB0_22: + mov.u32 %r79, 0; + max.s32 %r124, %r20, %r79; BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; + add.s32 %r80, %r124, %r4; + mad.lo.s32 %r24, %r80, %r43, %r1; + setp.lt.s32 %p29, %r20, 0; + mov.f32 %f266, 0f00000000; + and.pred %p30, %p29, %p27; + mov.f32 %f267, %f266; + mov.f32 %f268, %f266; + @%p30 bra BB0_25; + + mul.wide.s32 %rd43, %r24, 4; + add.s64 %rd44, %rd6, %rd43; + ld.global.nc.f32 %f266, [%rd44]; + add.s64 %rd45, %rd5, %rd43; + ld.global.nc.f32 %f267, [%rd45]; + add.s64 %rd46, %rd4, %rd43; + ld.global.nc.f32 %f268, [%rd46]; BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; + mul.f32 %f149, %f267, %f267; + fma.rn.f32 %f150, %f266, %f266, %f149; + fma.rn.f32 %f36, %f268, %f268, %f150; + setp.eq.f32 %p31, %f36, 0f00000000; + mov.u16 %rs39, %rs1; + @%p31 bra BB0_27; + + cvt.s64.s32 %rd47, %r24; + add.s64 %rd48, %rd3, %rd47; + ld.global.nc.u8 %rs39, [%rd48]; + +BB0_27: + setp.gt.u16 %p32, %rs39, %rs1; + cvt.u32.u16 %r81, %rs39; + and.b32 %r82, %r81, 255; + selp.b32 %r83, %r7, %r82, %p32; + selp.b32 %r84, %r82, %r7, %p32; + add.s32 %r85, %r84, 1; + mul.lo.s32 %r86, %r85, %r84; + shr.u32 %r87, %r86, 1; + add.s32 %r25, %r87, %r83; + and.pred %p35, %p31, %p13; + @%p35 bra BB0_29; + + mul.wide.s32 %rd49, %r25, 4; + add.s64 %rd50, %rd2, %rd49; + ld.global.nc.f32 %f151, [%rd50]; + add.f32 %f152, %f151, %f151; + add.s64 %rd51, %rd1, %rd49; + ld.global.nc.f32 %f153, [%rd51]; + div.rn.f32 %f154, %f153, %f152; + mul.f32 %f155, %f154, %f88; + mul.f32 %f156, %f3, %f155; + sub.f32 %f157, %f1, %f156; + fma.rn.f32 %f158, %f1, %f155, %f3; + selp.f32 %f159, %f157, %f266, %p31; + selp.f32 %f160, %f2, %f267, %p31; + selp.f32 %f161, %f158, %f268, %p31; + mul.f32 %f162, %f88, %f88; + div.rn.f32 %f163, %f152, %f162; + sub.f32 %f164, %f159, %f1; + sub.f32 %f165, %f160, %f2; + sub.f32 %f166, %f161, %f3; + fma.rn.f32 %f167, %f164, %f163, %f263; + fma.rn.f32 %f264, %f165, %f163, %f264; + fma.rn.f32 %f168, %f166, %f163, %f265; + div.rn.f32 %f169, %f153, %f88; + fma.rn.f32 %f263, %f161, %f169, %f167; + mul.f32 %f170, %f159, %f169; + sub.f32 %f265, %f168, %f170; + +BB0_29: + add.s32 %r26, %r2, 1; + @%p27 bra BB0_31; + + rem.s32 %r88, %r26, %r44; + add.s32 %r89, %r88, %r44; + rem.s32 %r125, %r89, %r44; + bra.uni BB0_32; + +BB0_31: + add.s32 %r90, %r44, -1; + min.s32 %r125, %r26, %r90; + +BB0_32: + add.s32 %r91, %r125, %r4; + mad.lo.s32 %r30, %r91, %r43, %r1; + setp.ge.s32 %p38, %r26, %r44; + mov.f32 %f272, 0f00000000; + and.pred %p40, %p38, %p27; + mov.f32 %f273, %f272; + mov.f32 %f274, %f272; + @%p40 bra BB0_34; + + mul.wide.s32 %rd52, %r30, 4; + add.s64 %rd53, %rd6, %rd52; + ld.global.nc.f32 %f272, [%rd53]; + add.s64 %rd54, %rd5, %rd52; + ld.global.nc.f32 %f273, [%rd54]; + add.s64 %rd55, %rd4, %rd52; + ld.global.nc.f32 %f274, [%rd55]; BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; + mul.f32 %f174, %f273, %f273; + fma.rn.f32 %f175, %f272, %f272, %f174; + fma.rn.f32 %f49, %f274, %f274, %f175; + setp.eq.f32 %p41, %f49, 0f00000000; + mov.u16 %rs40, %rs1; + @%p41 bra BB0_36; -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; - mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + cvt.s64.s32 %rd56, %r30; + add.s64 %rd57, %rd3, %rd56; + ld.global.nc.u8 %rs40, [%rd57]; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; +BB0_36: + setp.gt.u16 %p42, %rs40, %rs1; + cvt.u32.u16 %r92, %rs40; + and.b32 %r93, %r92, 255; + selp.b32 %r94, %r7, %r93, %p42; + selp.b32 %r95, %r93, %r7, %p42; + add.s32 %r96, %r95, 1; + mul.lo.s32 %r97, %r96, %r95; + shr.u32 %r98, %r97, 1; + add.s32 %r31, %r98, %r94; + and.pred %p45, %p41, %p13; + @%p45 bra BB0_38; + + mul.wide.s32 %rd58, %r31, 4; + add.s64 %rd59, %rd2, %rd58; + ld.global.nc.f32 %f176, [%rd59]; + add.f32 %f177, %f176, %f176; + add.s64 %rd60, %rd1, %rd58; + ld.global.nc.f32 %f178, [%rd60]; + div.rn.f32 %f179, %f178, %f177; + mul.f32 %f180, %f179, %f88; + fma.rn.f32 %f181, %f3, %f180, %f1; + mul.f32 %f182, %f1, %f180; + sub.f32 %f183, %f3, %f182; + selp.f32 %f184, %f181, %f272, %p41; + selp.f32 %f185, %f2, %f273, %p41; + selp.f32 %f186, %f183, %f274, %p41; + mul.f32 %f187, %f88, %f88; + div.rn.f32 %f188, %f177, %f187; + sub.f32 %f189, %f184, %f1; + sub.f32 %f190, %f185, %f2; + sub.f32 %f191, %f186, %f3; + fma.rn.f32 %f192, %f189, %f188, %f263; + fma.rn.f32 %f264, %f190, %f188, %f264; + fma.rn.f32 %f193, %f191, %f188, %f265; + div.rn.f32 %f194, %f178, %f88; + mul.f32 %f195, %f186, %f194; + sub.f32 %f263, %f192, %f195; + fma.rn.f32 %f265, %f184, %f194, %f193; BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; + setp.eq.s32 %p47, %r45, 1; + @%p47 bra BB0_57; -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; + and.b16 %rs12, %rs17, 4; + setp.eq.s16 %p48, %rs12, 0; + add.s32 %r32, %r3, -1; + @%p48 bra BB0_41; - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; + rem.s32 %r99, %r32, %r45; + add.s32 %r100, %r99, %r45; + rem.s32 %r126, %r100, %r45; + bra.uni BB0_42; -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; - and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; - add.s32 %r118, %r117, 1; - mul.lo.s32 %r119, %r118, %r117; - shr.u32 %r120, %r119, 1; - add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; +BB0_41: + mov.u32 %r101, 0; + max.s32 %r126, %r32, %r101; + +BB0_42: + mad.lo.s32 %r102, %r126, %r44, %r2; + mad.lo.s32 %r36, %r102, %r43, %r1; + setp.lt.s32 %p50, %r32, 0; + mov.f32 %f278, 0f00000000; + and.pred %p51, %p50, %p48; + mov.f32 %f279, %f278; + mov.f32 %f280, %f278; + @%p51 bra BB0_44; + + mul.wide.s32 %rd61, %r36, 4; + add.s64 %rd62, %rd6, %rd61; + ld.global.nc.f32 %f278, [%rd62]; + add.s64 %rd63, %rd5, %rd61; + ld.global.nc.f32 %f279, [%rd63]; + add.s64 %rd64, %rd4, %rd61; + ld.global.nc.f32 %f280, [%rd64]; + +BB0_44: + mul.f32 %f199, %f279, %f279; + fma.rn.f32 %f200, %f278, %f278, %f199; + fma.rn.f32 %f62, %f280, %f280, %f200; + setp.eq.f32 %p52, %f62, 0f00000000; + mov.u16 %rs41, %rs1; + @%p52 bra BB0_46; -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; + cvt.s64.s32 %rd65, %r36; + add.s64 %rd66, %rd3, %rd65; + ld.global.nc.u8 %rs41, [%rd66]; - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; +BB0_46: + setp.gt.u16 %p53, %rs41, %rs1; + cvt.u32.u16 %r103, %rs41; + and.b32 %r104, %r103, 255; + selp.b32 %r105, %r7, %r104, %p53; + selp.b32 %r106, %r104, %r7, %p53; + add.s32 %r107, %r106, 1; + mul.lo.s32 %r108, %r107, %r106; + shr.u32 %r109, %r108, 1; + add.s32 %r37, %r109, %r105; + and.pred %p56, %p52, %p13; + @%p56 bra BB0_48; + + mul.wide.s32 %rd67, %r37, 4; + add.s64 %rd68, %rd2, %rd67; + ld.global.nc.f32 %f201, [%rd68]; + add.f32 %f202, %f201, %f201; + add.s64 %rd69, %rd1, %rd67; + ld.global.nc.f32 %f203, [%rd69]; + div.rn.f32 %f204, %f203, %f202; + mul.f32 %f205, %f204, %f89; + fma.rn.f32 %f206, %f2, %f205, %f1; + mul.f32 %f207, %f1, %f205; + sub.f32 %f208, %f2, %f207; + selp.f32 %f209, %f206, %f278, %p52; + selp.f32 %f210, %f208, %f279, %p52; + selp.f32 %f211, %f3, %f280, %p52; + mul.f32 %f212, %f89, %f89; + div.rn.f32 %f213, %f202, %f212; + sub.f32 %f214, %f209, %f1; + sub.f32 %f215, %f210, %f2; + sub.f32 %f216, %f211, %f3; + fma.rn.f32 %f217, %f214, %f213, %f263; + fma.rn.f32 %f218, %f215, %f213, %f264; + fma.rn.f32 %f265, %f216, %f213, %f265; + div.rn.f32 %f219, %f203, %f89; + mul.f32 %f220, %f210, %f219; + sub.f32 %f263, %f217, %f220; + fma.rn.f32 %f264, %f209, %f219, %f218; BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; + add.s32 %r38, %r3, 1; + @%p48 bra BB0_50; - rcp.rn.f32 %f262, %f261; + rem.s32 %r110, %r38, %r45; + add.s32 %r111, %r110, %r45; + rem.s32 %r127, %r111, %r45; + bra.uni BB0_51; BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; + add.s32 %r112, %r45, -1; + min.s32 %r127, %r38, %r112; BB0_51: - ret; -} - - -` - adddmibulk_ptx_75 = ` -.version 6.3 -.target sm_75 -.address_size 64 - - // .globl adddmibulk - -.visible .entry adddmibulk( - .param .u64 adddmibulk_param_0, - .param .u64 adddmibulk_param_1, - .param .u64 adddmibulk_param_2, - .param .u64 adddmibulk_param_3, - .param .u64 adddmibulk_param_4, - .param .u64 adddmibulk_param_5, - .param .u64 adddmibulk_param_6, - .param .f32 adddmibulk_param_7, - .param .u64 adddmibulk_param_8, - .param .u64 adddmibulk_param_9, - .param .u64 adddmibulk_param_10, - .param .f32 adddmibulk_param_11, - .param .f32 adddmibulk_param_12, - .param .f32 adddmibulk_param_13, - .param .u32 adddmibulk_param_14, - .param .u32 adddmibulk_param_15, - .param .u32 adddmibulk_param_16, - .param .u8 adddmibulk_param_17 -) -{ - .reg .pred %p<52>; - .reg .b16 %rs<44>; - .reg .f32 %f<263>; - .reg .b32 %r<128>; - .reg .b64 %rd<87>; - - - ld.param.u64 %rd7, [adddmibulk_param_0]; - ld.param.u64 %rd8, [adddmibulk_param_1]; - ld.param.u64 %rd9, [adddmibulk_param_2]; - ld.param.u64 %rd11, [adddmibulk_param_3]; - ld.param.u64 %rd12, [adddmibulk_param_4]; - ld.param.u64 %rd13, [adddmibulk_param_5]; - ld.param.u64 %rd10, [adddmibulk_param_6]; - ld.param.u64 %rd14, [adddmibulk_param_8]; - ld.param.u64 %rd15, [adddmibulk_param_9]; - ld.param.u64 %rd16, [adddmibulk_param_10]; - ld.param.f32 %f84, [adddmibulk_param_11]; - ld.param.u32 %r38, [adddmibulk_param_14]; - ld.param.u32 %r39, [adddmibulk_param_15]; - ld.param.u32 %r40, [adddmibulk_param_16]; - ld.param.u8 %rs17, [adddmibulk_param_17]; - cvta.to.global.u64 %rd1, %rd15; - cvta.to.global.u64 %rd2, %rd14; - cvta.to.global.u64 %rd3, %rd16; - cvta.to.global.u64 %rd4, %rd13; - cvta.to.global.u64 %rd5, %rd12; - cvta.to.global.u64 %rd6, %rd11; - mov.u32 %r41, %ntid.x; - mov.u32 %r42, %ctaid.x; - mov.u32 %r43, %tid.x; - mad.lo.s32 %r1, %r41, %r42, %r43; - mov.u32 %r44, %ntid.y; - mov.u32 %r45, %ctaid.y; - mov.u32 %r46, %tid.y; - mad.lo.s32 %r2, %r44, %r45, %r46; - mov.u32 %r47, %ntid.z; - mov.u32 %r48, %ctaid.z; - mov.u32 %r49, %tid.z; - mad.lo.s32 %r3, %r47, %r48, %r49; - setp.ge.s32 %p1, %r2, %r39; - setp.ge.s32 %p2, %r1, %r38; - or.pred %p3, %p1, %p2; - setp.ge.s32 %p4, %r3, %r40; - or.pred %p5, %p3, %p4; - @%p5 bra BB0_51; - - mul.lo.s32 %r4, %r3, %r39; - add.s32 %r50, %r4, %r2; - mul.lo.s32 %r5, %r50, %r38; - add.s32 %r6, %r5, %r1; - mul.wide.s32 %rd17, %r6, 4; - add.s64 %rd18, %rd6, %rd17; - cvt.s64.s32 %rd19, %r6; - add.s64 %rd20, %rd5, %rd17; - add.s64 %rd21, %rd4, %rd17; - add.s64 %rd22, %rd3, %rd19; - ld.global.nc.u8 %rs1, [%rd22]; - cvt.u32.u16 %r51, %rs1; - and.b32 %r7, %r51, 255; - ld.global.nc.f32 %f1, [%rd18]; - ld.global.nc.f32 %f2, [%rd20]; - mul.f32 %f87, %f2, %f2; - fma.rn.f32 %f88, %f1, %f1, %f87; - ld.global.nc.f32 %f3, [%rd21]; - fma.rn.f32 %f89, %f3, %f3, %f88; - setp.eq.f32 %p6, %f89, 0f00000000; - @%p6 bra BB0_51; - - and.b16 %rs2, %rs17, 1; - setp.eq.s16 %p7, %rs2, 0; - add.s32 %r8, %r1, -1; - @%p7 bra BB0_4; - - rem.s32 %r52, %r8, %r38; - add.s32 %r53, %r52, %r38; - rem.s32 %r122, %r53, %r38; - bra.uni BB0_5; - -BB0_4: - mov.u32 %r54, 0; - max.s32 %r122, %r8, %r54; - -BB0_5: - add.s32 %r12, %r122, %r5; - setp.lt.s32 %p9, %r8, 0; - mov.f32 %f240, 0f00000000; - and.pred %p10, %p9, %p7; - mov.f32 %f241, %f240; - mov.f32 %f242, %f240; - @%p10 bra BB0_7; - - mul.wide.s32 %rd23, %r12, 4; - add.s64 %rd24, %rd6, %rd23; - ld.global.nc.f32 %f240, [%rd24]; - add.s64 %rd25, %rd5, %rd23; - ld.global.nc.f32 %f241, [%rd25]; - add.s64 %rd26, %rd4, %rd23; - ld.global.nc.f32 %f242, [%rd26]; - -BB0_7: - mul.f32 %f93, %f241, %f241; - fma.rn.f32 %f94, %f240, %f240, %f93; - fma.rn.f32 %f10, %f242, %f242, %f94; - setp.eq.f32 %p11, %f10, 0f00000000; - mov.u16 %rs38, %rs1; - @%p11 bra BB0_9; - - cvt.s64.s32 %rd27, %r12; - add.s64 %rd28, %rd3, %rd27; - ld.global.nc.u8 %rs38, [%rd28]; - -BB0_9: - setp.gt.u16 %p12, %rs38, %rs1; - cvt.u32.u16 %r55, %rs38; - and.b32 %r56, %r55, 255; - selp.b32 %r57, %r7, %r56, %p12; - selp.b32 %r58, %r56, %r7, %p12; - add.s32 %r59, %r58, 1; - mul.lo.s32 %r60, %r59, %r58; - shr.u32 %r61, %r60, 1; - add.s32 %r62, %r61, %r57; - mul.wide.s32 %rd29, %r62, 4; - add.s64 %rd30, %rd2, %rd29; - add.s64 %rd31, %rd1, %rd29; - ld.global.nc.f32 %f95, [%rd30]; - add.f32 %f96, %f95, %f95; - ld.global.nc.f32 %f97, [%rd31]; - div.rn.f32 %f98, %f97, %f96; - mul.f32 %f99, %f98, %f84; - fma.rn.f32 %f100, %f3, %f99, %f2; - mul.f32 %f101, %f2, %f99; - sub.f32 %f102, %f3, %f101; - selp.f32 %f103, %f1, %f240, %p11; - selp.f32 %f104, %f100, %f241, %p11; - selp.f32 %f11, %f102, %f242, %p11; - mul.f32 %f12, %f84, %f84; - div.rn.f32 %f105, %f96, %f12; - sub.f32 %f106, %f103, %f1; - sub.f32 %f107, %f104, %f2; - sub.f32 %f108, %f11, %f3; - fma.rn.f32 %f13, %f106, %f105, 0f00000000; - fma.rn.f32 %f14, %f105, %f107, 0f00000000; - fma.rn.f32 %f109, %f105, %f108, 0f00000000; - div.rn.f32 %f15, %f97, %f84; - fma.rn.f32 %f16, %f15, %f104, %f109; - add.s32 %r13, %r1, 1; - @%p7 bra BB0_11; - - rem.s32 %r63, %r13, %r38; - add.s32 %r64, %r63, %r38; - rem.s32 %r123, %r64, %r38; - bra.uni BB0_12; - -BB0_11: - add.s32 %r65, %r38, -1; - min.s32 %r123, %r13, %r65; - -BB0_12: - add.s32 %r17, %r123, %r5; - setp.ge.s32 %p15, %r13, %r38; - mul.f32 %f113, %f15, %f11; - sub.f32 %f17, %f14, %f113; - mov.f32 %f243, 0f00000000; - and.pred %p17, %p15, %p7; - mov.f32 %f244, %f243; - mov.f32 %f245, %f243; - @%p17 bra BB0_14; - - mul.wide.s32 %rd32, %r17, 4; - add.s64 %rd33, %rd6, %rd32; - ld.global.nc.f32 %f243, [%rd33]; - add.s64 %rd34, %rd5, %rd32; - ld.global.nc.f32 %f244, [%rd34]; - add.s64 %rd35, %rd4, %rd32; - ld.global.nc.f32 %f245, [%rd35]; - -BB0_14: - mul.f32 %f114, %f244, %f244; - fma.rn.f32 %f115, %f243, %f243, %f114; - fma.rn.f32 %f24, %f245, %f245, %f115; - setp.eq.f32 %p18, %f24, 0f00000000; - mov.u16 %rs39, %rs1; - @%p18 bra BB0_16; - - cvt.s64.s32 %rd36, %r17; - add.s64 %rd37, %rd3, %rd36; - ld.global.nc.u8 %rs39, [%rd37]; - -BB0_16: - ld.param.f32 %f233, [adddmibulk_param_11]; - ld.param.u8 %rs36, [adddmibulk_param_17]; - setp.gt.u16 %p19, %rs39, %rs1; - cvt.u32.u16 %r66, %rs39; - and.b32 %r67, %r66, 255; - selp.b32 %r68, %r7, %r67, %p19; - selp.b32 %r69, %r67, %r7, %p19; - add.s32 %r70, %r69, 1; - mul.lo.s32 %r71, %r70, %r69; - shr.u32 %r72, %r71, 1; - add.s32 %r73, %r72, %r68; - mul.wide.s32 %rd38, %r73, 4; - add.s64 %rd39, %rd2, %rd38; - add.s64 %rd40, %rd1, %rd38; - ld.global.nc.f32 %f116, [%rd39]; - add.f32 %f117, %f116, %f116; - ld.global.nc.f32 %f118, [%rd40]; - div.rn.f32 %f119, %f118, %f117; - mul.f32 %f120, %f119, %f233; - mul.f32 %f121, %f3, %f120; - sub.f32 %f122, %f2, %f121; - fma.rn.f32 %f123, %f2, %f120, %f3; - selp.f32 %f124, %f1, %f243, %p18; - selp.f32 %f25, %f122, %f244, %p18; - selp.f32 %f125, %f123, %f245, %p18; - div.rn.f32 %f126, %f117, %f12; - sub.f32 %f127, %f124, %f1; - sub.f32 %f128, %f25, %f2; - sub.f32 %f129, %f125, %f3; - fma.rn.f32 %f26, %f127, %f126, %f13; - fma.rn.f32 %f130, %f126, %f128, %f17; - fma.rn.f32 %f27, %f126, %f129, %f16; - div.rn.f32 %f28, %f118, %f233; - fma.rn.f32 %f29, %f28, %f125, %f130; - and.b16 %rs7, %rs36, 2; - setp.eq.s16 %p21, %rs7, 0; - add.s32 %r18, %r2, -1; - @%p21 bra BB0_18; - - rem.s32 %r74, %r18, %r39; - add.s32 %r75, %r74, %r39; - rem.s32 %r124, %r75, %r39; - bra.uni BB0_19; - -BB0_18: - mov.u32 %r76, 0; - max.s32 %r124, %r18, %r76; - -BB0_19: - add.s32 %r77, %r124, %r4; - mad.lo.s32 %r22, %r77, %r38, %r1; - setp.lt.s32 %p23, %r18, 0; - mul.f32 %f134, %f28, %f25; - sub.f32 %f30, %f27, %f134; - mov.f32 %f246, 0f00000000; - and.pred %p24, %p23, %p21; - mov.f32 %f247, %f246; - mov.f32 %f248, %f246; - @%p24 bra BB0_21; - - mul.wide.s32 %rd41, %r22, 4; - add.s64 %rd42, %rd6, %rd41; - ld.global.nc.f32 %f246, [%rd42]; - add.s64 %rd43, %rd5, %rd41; - ld.global.nc.f32 %f247, [%rd43]; - add.s64 %rd44, %rd4, %rd41; - ld.global.nc.f32 %f248, [%rd44]; - -BB0_21: - mul.f32 %f135, %f247, %f247; - fma.rn.f32 %f136, %f246, %f246, %f135; - fma.rn.f32 %f37, %f248, %f248, %f136; - setp.eq.f32 %p25, %f37, 0f00000000; - mov.u16 %rs40, %rs1; - @%p25 bra BB0_23; - - cvt.s64.s32 %rd45, %r22; - add.s64 %rd46, %rd3, %rd45; - ld.global.nc.u8 %rs40, [%rd46]; - -BB0_23: - ld.param.f32 %f234, [adddmibulk_param_12]; - setp.gt.u16 %p26, %rs40, %rs1; - cvt.u32.u16 %r78, %rs40; - and.b32 %r79, %r78, 255; - selp.b32 %r80, %r7, %r79, %p26; - selp.b32 %r81, %r79, %r7, %p26; - add.s32 %r82, %r81, 1; - mul.lo.s32 %r83, %r82, %r81; - shr.u32 %r84, %r83, 1; - add.s32 %r85, %r84, %r80; - mul.wide.s32 %rd47, %r85, 4; - add.s64 %rd48, %rd2, %rd47; - add.s64 %rd49, %rd1, %rd47; - ld.global.nc.f32 %f137, [%rd48]; - add.f32 %f138, %f137, %f137; - ld.global.nc.f32 %f139, [%rd49]; - div.rn.f32 %f140, %f139, %f138; - mul.f32 %f141, %f140, %f234; - mul.f32 %f142, %f3, %f141; - sub.f32 %f143, %f1, %f142; - fma.rn.f32 %f144, %f1, %f141, %f3; - selp.f32 %f38, %f143, %f246, %p25; - selp.f32 %f145, %f2, %f247, %p25; - selp.f32 %f146, %f144, %f248, %p25; - mul.f32 %f39, %f234, %f234; - div.rn.f32 %f147, %f138, %f39; - sub.f32 %f148, %f38, %f1; - sub.f32 %f149, %f145, %f2; - sub.f32 %f150, %f146, %f3; - fma.rn.f32 %f151, %f147, %f148, %f26; - fma.rn.f32 %f40, %f149, %f147, %f29; - fma.rn.f32 %f41, %f147, %f150, %f30; - div.rn.f32 %f42, %f139, %f234; - fma.rn.f32 %f43, %f42, %f146, %f151; - add.s32 %r23, %r2, 1; - @%p21 bra BB0_25; - - rem.s32 %r86, %r23, %r39; - add.s32 %r87, %r86, %r39; - rem.s32 %r125, %r87, %r39; - bra.uni BB0_26; - -BB0_25: - add.s32 %r88, %r39, -1; - min.s32 %r125, %r23, %r88; - -BB0_26: - add.s32 %r89, %r125, %r4; - mad.lo.s32 %r27, %r89, %r38, %r1; - setp.ge.s32 %p29, %r23, %r39; - mul.f32 %f155, %f42, %f38; - sub.f32 %f44, %f41, %f155; - mov.f32 %f249, 0f00000000; - and.pred %p31, %p29, %p21; - mov.f32 %f250, %f249; - mov.f32 %f251, %f249; - @%p31 bra BB0_28; - - mul.wide.s32 %rd50, %r27, 4; - add.s64 %rd51, %rd6, %rd50; - ld.global.nc.f32 %f249, [%rd51]; - add.s64 %rd52, %rd5, %rd50; - ld.global.nc.f32 %f250, [%rd52]; - add.s64 %rd53, %rd4, %rd50; - ld.global.nc.f32 %f251, [%rd53]; - -BB0_28: - mul.f32 %f156, %f250, %f250; - fma.rn.f32 %f157, %f249, %f249, %f156; - fma.rn.f32 %f51, %f251, %f251, %f157; - setp.eq.f32 %p32, %f51, 0f00000000; - mov.u16 %rs41, %rs1; - @%p32 bra BB0_30; - - cvt.s64.s32 %rd54, %r27; - add.s64 %rd55, %rd3, %rd54; - ld.global.nc.u8 %rs41, [%rd55]; - -BB0_30: - ld.param.f32 %f235, [adddmibulk_param_12]; - setp.gt.u16 %p33, %rs41, %rs1; - cvt.u32.u16 %r90, %rs41; - and.b32 %r91, %r90, 255; - selp.b32 %r92, %r7, %r91, %p33; - selp.b32 %r93, %r91, %r7, %p33; - add.s32 %r94, %r93, 1; - mul.lo.s32 %r95, %r94, %r93; - shr.u32 %r96, %r95, 1; - add.s32 %r97, %r96, %r92; - mul.wide.s32 %rd56, %r97, 4; - add.s64 %rd57, %rd2, %rd56; - add.s64 %rd58, %rd1, %rd56; - ld.global.nc.f32 %f158, [%rd57]; - add.f32 %f159, %f158, %f158; - ld.global.nc.f32 %f160, [%rd58]; - div.rn.f32 %f161, %f160, %f159; - mul.f32 %f162, %f161, %f235; - fma.rn.f32 %f163, %f3, %f162, %f1; - mul.f32 %f164, %f1, %f162; - sub.f32 %f165, %f3, %f164; - selp.f32 %f166, %f163, %f249, %p32; - selp.f32 %f167, %f2, %f250, %p32; - selp.f32 %f168, %f165, %f251, %p32; - div.rn.f32 %f169, %f159, %f39; - sub.f32 %f170, %f166, %f1; - sub.f32 %f171, %f167, %f2; - sub.f32 %f172, %f168, %f3; - fma.rn.f32 %f173, %f169, %f170, %f43; - fma.rn.f32 %f259, %f171, %f169, %f40; - fma.rn.f32 %f174, %f169, %f172, %f44; - div.rn.f32 %f175, %f160, %f235; - mul.f32 %f176, %f175, %f168; - sub.f32 %f258, %f173, %f176; - fma.rn.f32 %f260, %f175, %f166, %f174; - setp.eq.s32 %p35, %r40, 1; - @%p35 bra BB0_46; - - ld.param.u8 %rs37, [adddmibulk_param_17]; - and.b16 %rs12, %rs37, 4; - setp.eq.s16 %p36, %rs12, 0; - add.s32 %r28, %r3, -1; - @%p36 bra BB0_33; - - rem.s32 %r98, %r28, %r40; - add.s32 %r99, %r98, %r40; - rem.s32 %r126, %r99, %r40; - bra.uni BB0_34; - -BB0_33: - mov.u32 %r100, 0; - max.s32 %r126, %r28, %r100; - -BB0_34: - mad.lo.s32 %r101, %r126, %r39, %r2; - mad.lo.s32 %r32, %r101, %r38, %r1; - setp.lt.s32 %p38, %r28, 0; - mov.f32 %f252, 0f00000000; - and.pred %p39, %p38, %p36; - mov.f32 %f253, %f252; - mov.f32 %f254, %f252; - @%p39 bra BB0_36; - - mul.wide.s32 %rd59, %r32, 4; - add.s64 %rd60, %rd6, %rd59; - ld.global.nc.f32 %f252, [%rd60]; - add.s64 %rd61, %rd5, %rd59; - ld.global.nc.f32 %f253, [%rd61]; - add.s64 %rd62, %rd4, %rd59; - ld.global.nc.f32 %f254, [%rd62]; - -BB0_36: - mul.f32 %f180, %f253, %f253; - fma.rn.f32 %f181, %f252, %f252, %f180; - fma.rn.f32 %f61, %f254, %f254, %f181; - setp.eq.f32 %p40, %f61, 0f00000000; + mad.lo.s32 %r113, %r127, %r44, %r2; + mad.lo.s32 %r42, %r113, %r43, %r1; + setp.ge.s32 %p59, %r38, %r45; + mov.f32 %f284, 0f00000000; + and.pred %p61, %p59, %p48; + mov.f32 %f285, %f284; + mov.f32 %f286, %f284; + @%p61 bra BB0_53; + + mul.wide.s32 %rd70, %r42, 4; + add.s64 %rd71, %rd6, %rd70; + ld.global.nc.f32 %f286, [%rd71]; + add.s64 %rd72, %rd5, %rd70; + ld.global.nc.f32 %f285, [%rd72]; + add.s64 %rd73, %rd4, %rd70; + ld.global.nc.f32 %f284, [%rd73]; + +BB0_53: + mul.f32 %f224, %f286, %f286; + fma.rn.f32 %f225, %f285, %f285, %f224; + fma.rn.f32 %f75, %f284, %f284, %f225; + setp.eq.f32 %p62, %f75, 0f00000000; mov.u16 %rs42, %rs1; - @%p40 bra BB0_38; + @%p62 bra BB0_55; - cvt.s64.s32 %rd63, %r32; - add.s64 %rd64, %rd3, %rd63; - ld.global.nc.u8 %rs42, [%rd64]; + cvt.s64.s32 %rd74, %r42; + add.s64 %rd75, %rd3, %rd74; + ld.global.nc.u8 %rs42, [%rd75]; -BB0_38: - ld.param.f32 %f236, [adddmibulk_param_13]; - setp.gt.u16 %p41, %rs42, %rs1; - cvt.u32.u16 %r102, %rs42; - and.b32 %r103, %r102, 255; - selp.b32 %r104, %r7, %r103, %p41; - selp.b32 %r105, %r103, %r7, %p41; - add.s32 %r106, %r105, 1; - mul.lo.s32 %r107, %r106, %r105; - shr.u32 %r108, %r107, 1; - add.s32 %r109, %r108, %r104; - mul.wide.s32 %rd65, %r109, 4; - add.s64 %rd66, %rd2, %rd65; - add.s64 %rd67, %rd1, %rd65; - ld.global.nc.f32 %f182, [%rd66]; - add.f32 %f183, %f182, %f182; - ld.global.nc.f32 %f184, [%rd67]; - div.rn.f32 %f185, %f184, %f183; - mul.f32 %f186, %f185, %f236; - fma.rn.f32 %f187, %f2, %f186, %f1; - mul.f32 %f188, %f1, %f186; - sub.f32 %f189, %f2, %f188; - selp.f32 %f190, %f187, %f252, %p40; - selp.f32 %f191, %f189, %f253, %p40; - selp.f32 %f192, %f3, %f254, %p40; - mul.f32 %f62, %f236, %f236; - div.rn.f32 %f193, %f183, %f62; - sub.f32 %f194, %f190, %f1; - sub.f32 %f195, %f191, %f2; - sub.f32 %f196, %f192, %f3; - fma.rn.f32 %f197, %f193, %f194, %f258; - fma.rn.f32 %f198, %f193, %f195, %f259; - fma.rn.f32 %f63, %f196, %f193, %f260; - div.rn.f32 %f199, %f184, %f236; - mul.f32 %f200, %f199, %f191; - sub.f32 %f64, %f197, %f200; - fma.rn.f32 %f65, %f199, %f190, %f198; - add.s32 %r33, %r3, 1; - @%p36 bra BB0_40; - - rem.s32 %r110, %r33, %r40; - add.s32 %r111, %r110, %r40; - rem.s32 %r127, %r111, %r40; - bra.uni BB0_41; - -BB0_40: - add.s32 %r112, %r40, -1; - min.s32 %r127, %r33, %r112; - -BB0_41: - mad.lo.s32 %r113, %r127, %r39, %r2; - mad.lo.s32 %r37, %r113, %r38, %r1; - setp.ge.s32 %p44, %r33, %r40; - mov.f32 %f255, 0f00000000; - and.pred %p46, %p44, %p36; - mov.f32 %f256, %f255; - mov.f32 %f257, %f255; - @%p46 bra BB0_43; - - mul.wide.s32 %rd68, %r37, 4; - add.s64 %rd69, %rd6, %rd68; - ld.global.nc.f32 %f257, [%rd69]; - add.s64 %rd70, %rd5, %rd68; - ld.global.nc.f32 %f256, [%rd70]; - add.s64 %rd71, %rd4, %rd68; - ld.global.nc.f32 %f255, [%rd71]; - -BB0_43: - mul.f32 %f204, %f257, %f257; - fma.rn.f32 %f205, %f256, %f256, %f204; - fma.rn.f32 %f72, %f255, %f255, %f205; - setp.eq.f32 %p47, %f72, 0f00000000; - mov.u16 %rs43, %rs1; - @%p47 bra BB0_45; - - cvt.s64.s32 %rd72, %r37; - add.s64 %rd73, %rd3, %rd72; - ld.global.nc.u8 %rs43, [%rd73]; - -BB0_45: - ld.param.f32 %f237, [adddmibulk_param_13]; - setp.gt.u16 %p48, %rs43, %rs1; - cvt.u32.u16 %r114, %rs43; +BB0_55: + setp.gt.u16 %p63, %rs42, %rs1; + cvt.u32.u16 %r114, %rs42; and.b32 %r115, %r114, 255; - selp.b32 %r116, %r7, %r115, %p48; - selp.b32 %r117, %r115, %r7, %p48; + selp.b32 %r116, %r7, %r115, %p63; + selp.b32 %r117, %r115, %r7, %p63; add.s32 %r118, %r117, 1; mul.lo.s32 %r119, %r118, %r117; shr.u32 %r120, %r119, 1; add.s32 %r121, %r120, %r116; - mul.wide.s32 %rd74, %r121, 4; - add.s64 %rd75, %rd2, %rd74; - add.s64 %rd76, %rd1, %rd74; - ld.global.nc.f32 %f206, [%rd75]; - add.f32 %f207, %f206, %f206; - ld.global.nc.f32 %f208, [%rd76]; - div.rn.f32 %f209, %f208, %f207; - mul.f32 %f210, %f209, %f237; - mul.f32 %f211, %f2, %f210; - sub.f32 %f212, %f1, %f211; - fma.rn.f32 %f213, %f1, %f210, %f2; - selp.f32 %f214, %f3, %f255, %p47; - selp.f32 %f215, %f213, %f256, %p47; - selp.f32 %f216, %f212, %f257, %p47; - div.rn.f32 %f217, %f207, %f62; - sub.f32 %f218, %f216, %f1; - sub.f32 %f219, %f215, %f2; - sub.f32 %f220, %f214, %f3; - fma.rn.f32 %f221, %f217, %f218, %f64; - fma.rn.f32 %f222, %f217, %f219, %f65; - fma.rn.f32 %f260, %f220, %f217, %f63; - div.rn.f32 %f223, %f208, %f237; - fma.rn.f32 %f258, %f223, %f215, %f221; - mul.f32 %f224, %f223, %f216; - sub.f32 %f259, %f222, %f224; - -BB0_46: - ld.param.f32 %f261, [adddmibulk_param_7]; - setp.eq.s64 %p50, %rd10, 0; - @%p50 bra BB0_48; - - ld.param.f32 %f239, [adddmibulk_param_7]; - cvta.to.global.u64 %rd77, %rd10; - add.s64 %rd79, %rd77, %rd17; - ld.global.nc.f32 %f225, [%rd79]; - mul.f32 %f261, %f225, %f239; - -BB0_48: - setp.eq.f32 %p51, %f261, 0f00000000; - mov.f32 %f262, 0f00000000; - @%p51 bra BB0_50; - - rcp.rn.f32 %f262, %f261; - -BB0_50: - cvta.to.global.u64 %rd80, %rd9; - cvta.to.global.u64 %rd81, %rd8; - cvta.to.global.u64 %rd82, %rd7; - add.s64 %rd84, %rd82, %rd17; - ld.global.f32 %f227, [%rd84]; - fma.rn.f32 %f228, %f258, %f262, %f227; - st.global.f32 [%rd84], %f228; - add.s64 %rd85, %rd81, %rd17; - ld.global.f32 %f229, [%rd85]; - fma.rn.f32 %f230, %f259, %f262, %f229; - st.global.f32 [%rd85], %f230; - add.s64 %rd86, %rd80, %rd17; - ld.global.f32 %f231, [%rd86]; - fma.rn.f32 %f232, %f260, %f262, %f231; - st.global.f32 [%rd86], %f232; - -BB0_51: + mul.wide.s32 %rd76, %r121, 4; + add.s64 %rd7, %rd2, %rd76; + add.s64 %rd8, %rd1, %rd76; + and.pred %p66, %p62, %p13; + @%p66 bra BB0_57; + + ld.global.nc.f32 %f226, [%rd7]; + add.f32 %f227, %f226, %f226; + ld.global.nc.f32 %f228, [%rd8]; + div.rn.f32 %f229, %f228, %f227; + mul.f32 %f230, %f229, %f89; + mul.f32 %f231, %f2, %f230; + sub.f32 %f232, %f1, %f231; + fma.rn.f32 %f233, %f1, %f230, %f2; + selp.f32 %f234, %f3, %f284, %p62; + selp.f32 %f235, %f233, %f285, %p62; + selp.f32 %f236, %f232, %f286, %p62; + mul.f32 %f237, %f89, %f89; + div.rn.f32 %f238, %f227, %f237; + sub.f32 %f239, %f236, %f1; + sub.f32 %f240, %f235, %f2; + sub.f32 %f241, %f234, %f3; + fma.rn.f32 %f242, %f239, %f238, %f263; + fma.rn.f32 %f243, %f240, %f238, %f264; + fma.rn.f32 %f265, %f241, %f238, %f265; + div.rn.f32 %f244, %f228, %f89; + fma.rn.f32 %f263, %f235, %f244, %f242; + mul.f32 %f245, %f236, %f244; + sub.f32 %f264, %f243, %f245; + +BB0_57: + setp.eq.s64 %p68, %rd12, 0; + @%p68 bra BB0_59; + + cvta.to.global.u64 %rd77, %rd12; + add.s64 %rd79, %rd77, %rd19; + ld.global.nc.f32 %f246, [%rd79]; + mul.f32 %f290, %f246, %f290; + +BB0_59: + setp.eq.f32 %p69, %f290, 0f00000000; + mov.f32 %f291, 0f00000000; + @%p69 bra BB0_61; + + rcp.rn.f32 %f291, %f290; + +BB0_61: + cvta.to.global.u64 %rd80, %rd11; + cvta.to.global.u64 %rd81, %rd10; + cvta.to.global.u64 %rd82, %rd9; + add.s64 %rd84, %rd82, %rd19; + ld.global.f32 %f248, [%rd84]; + fma.rn.f32 %f249, %f263, %f291, %f248; + st.global.f32 [%rd84], %f249; + add.s64 %rd85, %rd81, %rd19; + ld.global.f32 %f250, [%rd85]; + fma.rn.f32 %f251, %f264, %f291, %f250; + st.global.f32 [%rd85], %f251; + add.s64 %rd86, %rd80, %rd19; + ld.global.f32 %f252, [%rd86]; + fma.rn.f32 %f253, %f265, %f291, %f252; + st.global.f32 [%rd86], %f253; + +BB0_62: ret; } ` - ) +) diff --git a/cuda/dotproduct_wrapper.go b/cuda/dotproduct_wrapper.go index a318c7861..65a1da8d0 100644 --- a/cuda/dotproduct_wrapper.go +++ b/cuda/dotproduct_wrapper.go @@ -5,50 +5,50 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for dotproduct kernel var dotproduct_code cu.Function // Stores the arguments for dotproduct kernel invocation -type dotproduct_args_t struct{ - arg_dst unsafe.Pointer - arg_prefactor float32 - arg_ax unsafe.Pointer - arg_ay unsafe.Pointer - arg_az unsafe.Pointer - arg_bx unsafe.Pointer - arg_by unsafe.Pointer - arg_bz unsafe.Pointer - arg_N int - argptr [9]unsafe.Pointer +type dotproduct_args_t struct { + arg_dst unsafe.Pointer + arg_prefactor float32 + arg_ax unsafe.Pointer + arg_ay unsafe.Pointer + arg_az unsafe.Pointer + arg_bx unsafe.Pointer + arg_by unsafe.Pointer + arg_bz unsafe.Pointer + arg_N int + argptr [9]unsafe.Pointer sync.Mutex } // Stores the arguments for dotproduct kernel invocation var dotproduct_args dotproduct_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - dotproduct_args.argptr[0] = unsafe.Pointer(&dotproduct_args.arg_dst) - dotproduct_args.argptr[1] = unsafe.Pointer(&dotproduct_args.arg_prefactor) - dotproduct_args.argptr[2] = unsafe.Pointer(&dotproduct_args.arg_ax) - dotproduct_args.argptr[3] = unsafe.Pointer(&dotproduct_args.arg_ay) - dotproduct_args.argptr[4] = unsafe.Pointer(&dotproduct_args.arg_az) - dotproduct_args.argptr[5] = unsafe.Pointer(&dotproduct_args.arg_bx) - dotproduct_args.argptr[6] = unsafe.Pointer(&dotproduct_args.arg_by) - dotproduct_args.argptr[7] = unsafe.Pointer(&dotproduct_args.arg_bz) - dotproduct_args.argptr[8] = unsafe.Pointer(&dotproduct_args.arg_N) - } + dotproduct_args.argptr[0] = unsafe.Pointer(&dotproduct_args.arg_dst) + dotproduct_args.argptr[1] = unsafe.Pointer(&dotproduct_args.arg_prefactor) + dotproduct_args.argptr[2] = unsafe.Pointer(&dotproduct_args.arg_ax) + dotproduct_args.argptr[3] = unsafe.Pointer(&dotproduct_args.arg_ay) + dotproduct_args.argptr[4] = unsafe.Pointer(&dotproduct_args.arg_az) + dotproduct_args.argptr[5] = unsafe.Pointer(&dotproduct_args.arg_bx) + dotproduct_args.argptr[6] = unsafe.Pointer(&dotproduct_args.arg_by) + dotproduct_args.argptr[7] = unsafe.Pointer(&dotproduct_args.arg_bz) + dotproduct_args.argptr[8] = unsafe.Pointer(&dotproduct_args.arg_N) +} // Wrapper for dotproduct CUDA kernel, asynchronous. -func k_dotproduct_async ( dst unsafe.Pointer, prefactor float32, ax unsafe.Pointer, ay unsafe.Pointer, az unsafe.Pointer, bx unsafe.Pointer, by unsafe.Pointer, bz unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_dotproduct_async(dst unsafe.Pointer, prefactor float32, ax unsafe.Pointer, ay unsafe.Pointer, az unsafe.Pointer, bx unsafe.Pointer, by unsafe.Pointer, bz unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("dotproduct") } @@ -56,46 +56,45 @@ func k_dotproduct_async ( dst unsafe.Pointer, prefactor float32, ax unsafe.Point dotproduct_args.Lock() defer dotproduct_args.Unlock() - if dotproduct_code == 0{ + if dotproduct_code == 0 { dotproduct_code = fatbinLoad(dotproduct_map, "dotproduct") } - dotproduct_args.arg_dst = dst - dotproduct_args.arg_prefactor = prefactor - dotproduct_args.arg_ax = ax - dotproduct_args.arg_ay = ay - dotproduct_args.arg_az = az - dotproduct_args.arg_bx = bx - dotproduct_args.arg_by = by - dotproduct_args.arg_bz = bz - dotproduct_args.arg_N = N - + dotproduct_args.arg_dst = dst + dotproduct_args.arg_prefactor = prefactor + dotproduct_args.arg_ax = ax + dotproduct_args.arg_ay = ay + dotproduct_args.arg_az = az + dotproduct_args.arg_bx = bx + dotproduct_args.arg_by = by + dotproduct_args.arg_bz = bz + dotproduct_args.arg_N = N args := dotproduct_args.argptr[:] cu.LaunchKernel(dotproduct_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("dotproduct") } } // maps compute capability on PTX code for dotproduct kernel. -var dotproduct_map = map[int]string{ 0: "" , -30: dotproduct_ptx_30 , -35: dotproduct_ptx_35 , -37: dotproduct_ptx_37 , -50: dotproduct_ptx_50 , -52: dotproduct_ptx_52 , -53: dotproduct_ptx_53 , -60: dotproduct_ptx_60 , -61: dotproduct_ptx_61 , -70: dotproduct_ptx_70 , -75: dotproduct_ptx_75 } +var dotproduct_map = map[int]string{0: "", + 30: dotproduct_ptx_30, + 35: dotproduct_ptx_35, + 37: dotproduct_ptx_37, + 50: dotproduct_ptx_50, + 52: dotproduct_ptx_52, + 53: dotproduct_ptx_53, + 60: dotproduct_ptx_60, + 61: dotproduct_ptx_61, + 70: dotproduct_ptx_70, + 75: dotproduct_ptx_75} // dotproduct PTX code for various compute capabilities. -const( - dotproduct_ptx_30 = ` +const ( + dotproduct_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -173,7 +172,7 @@ BB0_2: ` - dotproduct_ptx_35 = ` + dotproduct_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -251,7 +250,7 @@ BB0_2: ` - dotproduct_ptx_37 = ` + dotproduct_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -329,7 +328,7 @@ BB0_2: ` - dotproduct_ptx_50 = ` + dotproduct_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -407,7 +406,7 @@ BB0_2: ` - dotproduct_ptx_52 = ` + dotproduct_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -485,7 +484,7 @@ BB0_2: ` - dotproduct_ptx_53 = ` + dotproduct_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -563,7 +562,7 @@ BB0_2: ` - dotproduct_ptx_60 = ` + dotproduct_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -641,7 +640,7 @@ BB0_2: ` - dotproduct_ptx_61 = ` + dotproduct_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -719,7 +718,7 @@ BB0_2: ` - dotproduct_ptx_70 = ` + dotproduct_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -797,7 +796,7 @@ BB0_2: ` - dotproduct_ptx_75 = ` + dotproduct_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -875,4 +874,4 @@ BB0_2: ` - ) +) diff --git a/cuda/exchange_wrapper.go b/cuda/exchange_wrapper.go index e0e3b9960..014b5e0ef 100644 --- a/cuda/exchange_wrapper.go +++ b/cuda/exchange_wrapper.go @@ -5,66 +5,66 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for addexchange kernel var addexchange_code cu.Function // Stores the arguments for addexchange kernel invocation -type addexchange_args_t struct{ - arg_Bx unsafe.Pointer - arg_By unsafe.Pointer - arg_Bz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_aLUT2d unsafe.Pointer - arg_regions unsafe.Pointer - arg_wx float32 - arg_wy float32 - arg_wz float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [17]unsafe.Pointer +type addexchange_args_t struct { + arg_Bx unsafe.Pointer + arg_By unsafe.Pointer + arg_Bz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_aLUT2d unsafe.Pointer + arg_regions unsafe.Pointer + arg_wx float32 + arg_wy float32 + arg_wz float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + argptr [17]unsafe.Pointer sync.Mutex } // Stores the arguments for addexchange kernel invocation var addexchange_args addexchange_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - addexchange_args.argptr[0] = unsafe.Pointer(&addexchange_args.arg_Bx) - addexchange_args.argptr[1] = unsafe.Pointer(&addexchange_args.arg_By) - addexchange_args.argptr[2] = unsafe.Pointer(&addexchange_args.arg_Bz) - addexchange_args.argptr[3] = unsafe.Pointer(&addexchange_args.arg_mx) - addexchange_args.argptr[4] = unsafe.Pointer(&addexchange_args.arg_my) - addexchange_args.argptr[5] = unsafe.Pointer(&addexchange_args.arg_mz) - addexchange_args.argptr[6] = unsafe.Pointer(&addexchange_args.arg_Ms_) - addexchange_args.argptr[7] = unsafe.Pointer(&addexchange_args.arg_Ms_mul) - addexchange_args.argptr[8] = unsafe.Pointer(&addexchange_args.arg_aLUT2d) - addexchange_args.argptr[9] = unsafe.Pointer(&addexchange_args.arg_regions) - addexchange_args.argptr[10] = unsafe.Pointer(&addexchange_args.arg_wx) - addexchange_args.argptr[11] = unsafe.Pointer(&addexchange_args.arg_wy) - addexchange_args.argptr[12] = unsafe.Pointer(&addexchange_args.arg_wz) - addexchange_args.argptr[13] = unsafe.Pointer(&addexchange_args.arg_Nx) - addexchange_args.argptr[14] = unsafe.Pointer(&addexchange_args.arg_Ny) - addexchange_args.argptr[15] = unsafe.Pointer(&addexchange_args.arg_Nz) - addexchange_args.argptr[16] = unsafe.Pointer(&addexchange_args.arg_PBC) - } + addexchange_args.argptr[0] = unsafe.Pointer(&addexchange_args.arg_Bx) + addexchange_args.argptr[1] = unsafe.Pointer(&addexchange_args.arg_By) + addexchange_args.argptr[2] = unsafe.Pointer(&addexchange_args.arg_Bz) + addexchange_args.argptr[3] = unsafe.Pointer(&addexchange_args.arg_mx) + addexchange_args.argptr[4] = unsafe.Pointer(&addexchange_args.arg_my) + addexchange_args.argptr[5] = unsafe.Pointer(&addexchange_args.arg_mz) + addexchange_args.argptr[6] = unsafe.Pointer(&addexchange_args.arg_Ms_) + addexchange_args.argptr[7] = unsafe.Pointer(&addexchange_args.arg_Ms_mul) + addexchange_args.argptr[8] = unsafe.Pointer(&addexchange_args.arg_aLUT2d) + addexchange_args.argptr[9] = unsafe.Pointer(&addexchange_args.arg_regions) + addexchange_args.argptr[10] = unsafe.Pointer(&addexchange_args.arg_wx) + addexchange_args.argptr[11] = unsafe.Pointer(&addexchange_args.arg_wy) + addexchange_args.argptr[12] = unsafe.Pointer(&addexchange_args.arg_wz) + addexchange_args.argptr[13] = unsafe.Pointer(&addexchange_args.arg_Nx) + addexchange_args.argptr[14] = unsafe.Pointer(&addexchange_args.arg_Ny) + addexchange_args.argptr[15] = unsafe.Pointer(&addexchange_args.arg_Nz) + addexchange_args.argptr[16] = unsafe.Pointer(&addexchange_args.arg_PBC) +} // Wrapper for addexchange CUDA kernel, asynchronous. -func k_addexchange_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, aLUT2d unsafe.Pointer, regions unsafe.Pointer, wx float32, wy float32, wz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_addexchange_async(Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, aLUT2d unsafe.Pointer, regions unsafe.Pointer, wx float32, wy float32, wz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("addexchange") } @@ -72,54 +72,53 @@ func k_addexchange_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Point addexchange_args.Lock() defer addexchange_args.Unlock() - if addexchange_code == 0{ + if addexchange_code == 0 { addexchange_code = fatbinLoad(addexchange_map, "addexchange") } - addexchange_args.arg_Bx = Bx - addexchange_args.arg_By = By - addexchange_args.arg_Bz = Bz - addexchange_args.arg_mx = mx - addexchange_args.arg_my = my - addexchange_args.arg_mz = mz - addexchange_args.arg_Ms_ = Ms_ - addexchange_args.arg_Ms_mul = Ms_mul - addexchange_args.arg_aLUT2d = aLUT2d - addexchange_args.arg_regions = regions - addexchange_args.arg_wx = wx - addexchange_args.arg_wy = wy - addexchange_args.arg_wz = wz - addexchange_args.arg_Nx = Nx - addexchange_args.arg_Ny = Ny - addexchange_args.arg_Nz = Nz - addexchange_args.arg_PBC = PBC - + addexchange_args.arg_Bx = Bx + addexchange_args.arg_By = By + addexchange_args.arg_Bz = Bz + addexchange_args.arg_mx = mx + addexchange_args.arg_my = my + addexchange_args.arg_mz = mz + addexchange_args.arg_Ms_ = Ms_ + addexchange_args.arg_Ms_mul = Ms_mul + addexchange_args.arg_aLUT2d = aLUT2d + addexchange_args.arg_regions = regions + addexchange_args.arg_wx = wx + addexchange_args.arg_wy = wy + addexchange_args.arg_wz = wz + addexchange_args.arg_Nx = Nx + addexchange_args.arg_Ny = Ny + addexchange_args.arg_Nz = Nz + addexchange_args.arg_PBC = PBC args := addexchange_args.argptr[:] cu.LaunchKernel(addexchange_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("addexchange") } } // maps compute capability on PTX code for addexchange kernel. -var addexchange_map = map[int]string{ 0: "" , -30: addexchange_ptx_30 , -35: addexchange_ptx_35 , -37: addexchange_ptx_37 , -50: addexchange_ptx_50 , -52: addexchange_ptx_52 , -53: addexchange_ptx_53 , -60: addexchange_ptx_60 , -61: addexchange_ptx_61 , -70: addexchange_ptx_70 , -75: addexchange_ptx_75 } +var addexchange_map = map[int]string{0: "", + 30: addexchange_ptx_30, + 35: addexchange_ptx_35, + 37: addexchange_ptx_37, + 50: addexchange_ptx_50, + 52: addexchange_ptx_52, + 53: addexchange_ptx_53, + 60: addexchange_ptx_60, + 61: addexchange_ptx_61, + 70: addexchange_ptx_70, + 75: addexchange_ptx_75} // addexchange PTX code for various compute capabilities. -const( - addexchange_ptx_30 = ` +const ( + addexchange_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -568,7 +567,7 @@ BB0_27: ` - addexchange_ptx_35 = ` + addexchange_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -1018,7 +1017,7 @@ BB0_27: ` - addexchange_ptx_37 = ` + addexchange_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1468,7 +1467,7 @@ BB0_27: ` - addexchange_ptx_50 = ` + addexchange_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1918,7 +1917,7 @@ BB0_27: ` - addexchange_ptx_52 = ` + addexchange_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -2368,7 +2367,7 @@ BB0_27: ` - addexchange_ptx_53 = ` + addexchange_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -2818,7 +2817,7 @@ BB0_27: ` - addexchange_ptx_60 = ` + addexchange_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -3268,7 +3267,7 @@ BB0_27: ` - addexchange_ptx_61 = ` + addexchange_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -3718,7 +3717,7 @@ BB0_27: ` - addexchange_ptx_70 = ` + addexchange_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -4168,7 +4167,7 @@ BB0_27: ` - addexchange_ptx_75 = ` + addexchange_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -4618,4 +4617,4 @@ BB0_27: ` - ) +) diff --git a/cuda/exchangedecode_wrapper.go b/cuda/exchangedecode_wrapper.go index 83dc2b95b..89bbf4c6a 100644 --- a/cuda/exchangedecode_wrapper.go +++ b/cuda/exchangedecode_wrapper.go @@ -5,52 +5,52 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for exchangedecode kernel var exchangedecode_code cu.Function // Stores the arguments for exchangedecode kernel invocation -type exchangedecode_args_t struct{ - arg_dst unsafe.Pointer - arg_aLUT2d unsafe.Pointer - arg_regions unsafe.Pointer - arg_wx float32 - arg_wy float32 - arg_wz float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [10]unsafe.Pointer +type exchangedecode_args_t struct { + arg_dst unsafe.Pointer + arg_aLUT2d unsafe.Pointer + arg_regions unsafe.Pointer + arg_wx float32 + arg_wy float32 + arg_wz float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + argptr [10]unsafe.Pointer sync.Mutex } // Stores the arguments for exchangedecode kernel invocation var exchangedecode_args exchangedecode_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - exchangedecode_args.argptr[0] = unsafe.Pointer(&exchangedecode_args.arg_dst) - exchangedecode_args.argptr[1] = unsafe.Pointer(&exchangedecode_args.arg_aLUT2d) - exchangedecode_args.argptr[2] = unsafe.Pointer(&exchangedecode_args.arg_regions) - exchangedecode_args.argptr[3] = unsafe.Pointer(&exchangedecode_args.arg_wx) - exchangedecode_args.argptr[4] = unsafe.Pointer(&exchangedecode_args.arg_wy) - exchangedecode_args.argptr[5] = unsafe.Pointer(&exchangedecode_args.arg_wz) - exchangedecode_args.argptr[6] = unsafe.Pointer(&exchangedecode_args.arg_Nx) - exchangedecode_args.argptr[7] = unsafe.Pointer(&exchangedecode_args.arg_Ny) - exchangedecode_args.argptr[8] = unsafe.Pointer(&exchangedecode_args.arg_Nz) - exchangedecode_args.argptr[9] = unsafe.Pointer(&exchangedecode_args.arg_PBC) - } + exchangedecode_args.argptr[0] = unsafe.Pointer(&exchangedecode_args.arg_dst) + exchangedecode_args.argptr[1] = unsafe.Pointer(&exchangedecode_args.arg_aLUT2d) + exchangedecode_args.argptr[2] = unsafe.Pointer(&exchangedecode_args.arg_regions) + exchangedecode_args.argptr[3] = unsafe.Pointer(&exchangedecode_args.arg_wx) + exchangedecode_args.argptr[4] = unsafe.Pointer(&exchangedecode_args.arg_wy) + exchangedecode_args.argptr[5] = unsafe.Pointer(&exchangedecode_args.arg_wz) + exchangedecode_args.argptr[6] = unsafe.Pointer(&exchangedecode_args.arg_Nx) + exchangedecode_args.argptr[7] = unsafe.Pointer(&exchangedecode_args.arg_Ny) + exchangedecode_args.argptr[8] = unsafe.Pointer(&exchangedecode_args.arg_Nz) + exchangedecode_args.argptr[9] = unsafe.Pointer(&exchangedecode_args.arg_PBC) +} // Wrapper for exchangedecode CUDA kernel, asynchronous. -func k_exchangedecode_async ( dst unsafe.Pointer, aLUT2d unsafe.Pointer, regions unsafe.Pointer, wx float32, wy float32, wz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_exchangedecode_async(dst unsafe.Pointer, aLUT2d unsafe.Pointer, regions unsafe.Pointer, wx float32, wy float32, wz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("exchangedecode") } @@ -58,47 +58,46 @@ func k_exchangedecode_async ( dst unsafe.Pointer, aLUT2d unsafe.Pointer, regions exchangedecode_args.Lock() defer exchangedecode_args.Unlock() - if exchangedecode_code == 0{ + if exchangedecode_code == 0 { exchangedecode_code = fatbinLoad(exchangedecode_map, "exchangedecode") } - exchangedecode_args.arg_dst = dst - exchangedecode_args.arg_aLUT2d = aLUT2d - exchangedecode_args.arg_regions = regions - exchangedecode_args.arg_wx = wx - exchangedecode_args.arg_wy = wy - exchangedecode_args.arg_wz = wz - exchangedecode_args.arg_Nx = Nx - exchangedecode_args.arg_Ny = Ny - exchangedecode_args.arg_Nz = Nz - exchangedecode_args.arg_PBC = PBC - + exchangedecode_args.arg_dst = dst + exchangedecode_args.arg_aLUT2d = aLUT2d + exchangedecode_args.arg_regions = regions + exchangedecode_args.arg_wx = wx + exchangedecode_args.arg_wy = wy + exchangedecode_args.arg_wz = wz + exchangedecode_args.arg_Nx = Nx + exchangedecode_args.arg_Ny = Ny + exchangedecode_args.arg_Nz = Nz + exchangedecode_args.arg_PBC = PBC args := exchangedecode_args.argptr[:] cu.LaunchKernel(exchangedecode_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("exchangedecode") } } // maps compute capability on PTX code for exchangedecode kernel. -var exchangedecode_map = map[int]string{ 0: "" , -30: exchangedecode_ptx_30 , -35: exchangedecode_ptx_35 , -37: exchangedecode_ptx_37 , -50: exchangedecode_ptx_50 , -52: exchangedecode_ptx_52 , -53: exchangedecode_ptx_53 , -60: exchangedecode_ptx_60 , -61: exchangedecode_ptx_61 , -70: exchangedecode_ptx_70 , -75: exchangedecode_ptx_75 } +var exchangedecode_map = map[int]string{0: "", + 30: exchangedecode_ptx_30, + 35: exchangedecode_ptx_35, + 37: exchangedecode_ptx_37, + 50: exchangedecode_ptx_50, + 52: exchangedecode_ptx_52, + 53: exchangedecode_ptx_53, + 60: exchangedecode_ptx_60, + 61: exchangedecode_ptx_61, + 70: exchangedecode_ptx_70, + 75: exchangedecode_ptx_75} // exchangedecode PTX code for various compute capabilities. -const( - exchangedecode_ptx_30 = ` +const ( + exchangedecode_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -362,7 +361,7 @@ BB0_22: ` - exchangedecode_ptx_35 = ` + exchangedecode_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -632,7 +631,7 @@ BB0_22: ` - exchangedecode_ptx_37 = ` + exchangedecode_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -902,7 +901,7 @@ BB0_22: ` - exchangedecode_ptx_50 = ` + exchangedecode_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1172,7 +1171,7 @@ BB0_22: ` - exchangedecode_ptx_52 = ` + exchangedecode_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -1442,7 +1441,7 @@ BB0_22: ` - exchangedecode_ptx_53 = ` + exchangedecode_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -1712,7 +1711,7 @@ BB0_22: ` - exchangedecode_ptx_60 = ` + exchangedecode_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -1982,7 +1981,7 @@ BB0_22: ` - exchangedecode_ptx_61 = ` + exchangedecode_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -2252,7 +2251,7 @@ BB0_22: ` - exchangedecode_ptx_70 = ` + exchangedecode_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -2522,7 +2521,7 @@ BB0_22: ` - exchangedecode_ptx_75 = ` + exchangedecode_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -2792,4 +2791,4 @@ BB0_22: ` - ) +) diff --git a/cuda/kernmulc_wrapper.go b/cuda/kernmulc_wrapper.go index bf9a86c85..caa219fb1 100644 --- a/cuda/kernmulc_wrapper.go +++ b/cuda/kernmulc_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for kernmulC kernel var kernmulC_code cu.Function // Stores the arguments for kernmulC kernel invocation -type kernmulC_args_t struct{ - arg_fftM unsafe.Pointer - arg_fftK unsafe.Pointer - arg_Nx int - arg_Ny int - argptr [4]unsafe.Pointer +type kernmulC_args_t struct { + arg_fftM unsafe.Pointer + arg_fftK unsafe.Pointer + arg_Nx int + arg_Ny int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for kernmulC kernel invocation var kernmulC_args kernmulC_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - kernmulC_args.argptr[0] = unsafe.Pointer(&kernmulC_args.arg_fftM) - kernmulC_args.argptr[1] = unsafe.Pointer(&kernmulC_args.arg_fftK) - kernmulC_args.argptr[2] = unsafe.Pointer(&kernmulC_args.arg_Nx) - kernmulC_args.argptr[3] = unsafe.Pointer(&kernmulC_args.arg_Ny) - } + kernmulC_args.argptr[0] = unsafe.Pointer(&kernmulC_args.arg_fftM) + kernmulC_args.argptr[1] = unsafe.Pointer(&kernmulC_args.arg_fftK) + kernmulC_args.argptr[2] = unsafe.Pointer(&kernmulC_args.arg_Nx) + kernmulC_args.argptr[3] = unsafe.Pointer(&kernmulC_args.arg_Ny) +} // Wrapper for kernmulC CUDA kernel, asynchronous. -func k_kernmulC_async ( fftM unsafe.Pointer, fftK unsafe.Pointer, Nx int, Ny int, cfg *config) { - if Synchronous{ // debug +func k_kernmulC_async(fftM unsafe.Pointer, fftK unsafe.Pointer, Nx int, Ny int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("kernmulC") } @@ -46,41 +46,40 @@ func k_kernmulC_async ( fftM unsafe.Pointer, fftK unsafe.Pointer, Nx int, Ny int kernmulC_args.Lock() defer kernmulC_args.Unlock() - if kernmulC_code == 0{ + if kernmulC_code == 0 { kernmulC_code = fatbinLoad(kernmulC_map, "kernmulC") } - kernmulC_args.arg_fftM = fftM - kernmulC_args.arg_fftK = fftK - kernmulC_args.arg_Nx = Nx - kernmulC_args.arg_Ny = Ny - + kernmulC_args.arg_fftM = fftM + kernmulC_args.arg_fftK = fftK + kernmulC_args.arg_Nx = Nx + kernmulC_args.arg_Ny = Ny args := kernmulC_args.argptr[:] cu.LaunchKernel(kernmulC_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("kernmulC") } } // maps compute capability on PTX code for kernmulC kernel. -var kernmulC_map = map[int]string{ 0: "" , -30: kernmulC_ptx_30 , -35: kernmulC_ptx_35 , -37: kernmulC_ptx_37 , -50: kernmulC_ptx_50 , -52: kernmulC_ptx_52 , -53: kernmulC_ptx_53 , -60: kernmulC_ptx_60 , -61: kernmulC_ptx_61 , -70: kernmulC_ptx_70 , -75: kernmulC_ptx_75 } +var kernmulC_map = map[int]string{0: "", + 30: kernmulC_ptx_30, + 35: kernmulC_ptx_35, + 37: kernmulC_ptx_37, + 50: kernmulC_ptx_50, + 52: kernmulC_ptx_52, + 53: kernmulC_ptx_53, + 60: kernmulC_ptx_60, + 61: kernmulC_ptx_61, + 70: kernmulC_ptx_70, + 75: kernmulC_ptx_75} // kernmulC PTX code for various compute capabilities. -const( - kernmulC_ptx_30 = ` +const ( + kernmulC_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -142,7 +141,7 @@ BB0_2: ` - kernmulC_ptx_35 = ` + kernmulC_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -204,7 +203,7 @@ BB0_2: ` - kernmulC_ptx_37 = ` + kernmulC_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -266,7 +265,7 @@ BB0_2: ` - kernmulC_ptx_50 = ` + kernmulC_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -328,7 +327,7 @@ BB0_2: ` - kernmulC_ptx_52 = ` + kernmulC_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -390,7 +389,7 @@ BB0_2: ` - kernmulC_ptx_53 = ` + kernmulC_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -452,7 +451,7 @@ BB0_2: ` - kernmulC_ptx_60 = ` + kernmulC_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -514,7 +513,7 @@ BB0_2: ` - kernmulC_ptx_61 = ` + kernmulC_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -576,7 +575,7 @@ BB0_2: ` - kernmulC_ptx_70 = ` + kernmulC_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -638,7 +637,7 @@ BB0_2: ` - kernmulC_ptx_75 = ` + kernmulC_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -700,4 +699,4 @@ BB0_2: ` - ) +) diff --git a/cuda/kernmulrsymm2dxy_wrapper.go b/cuda/kernmulrsymm2dxy_wrapper.go index 2fc58d609..7e2c1c18a 100644 --- a/cuda/kernmulrsymm2dxy_wrapper.go +++ b/cuda/kernmulrsymm2dxy_wrapper.go @@ -5,46 +5,46 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for kernmulRSymm2Dxy kernel var kernmulRSymm2Dxy_code cu.Function // Stores the arguments for kernmulRSymm2Dxy kernel invocation -type kernmulRSymm2Dxy_args_t struct{ - arg_fftMx unsafe.Pointer - arg_fftMy unsafe.Pointer - arg_fftKxx unsafe.Pointer - arg_fftKyy unsafe.Pointer - arg_fftKxy unsafe.Pointer - arg_Nx int - arg_Ny int - argptr [7]unsafe.Pointer +type kernmulRSymm2Dxy_args_t struct { + arg_fftMx unsafe.Pointer + arg_fftMy unsafe.Pointer + arg_fftKxx unsafe.Pointer + arg_fftKyy unsafe.Pointer + arg_fftKxy unsafe.Pointer + arg_Nx int + arg_Ny int + argptr [7]unsafe.Pointer sync.Mutex } // Stores the arguments for kernmulRSymm2Dxy kernel invocation var kernmulRSymm2Dxy_args kernmulRSymm2Dxy_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - kernmulRSymm2Dxy_args.argptr[0] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftMx) - kernmulRSymm2Dxy_args.argptr[1] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftMy) - kernmulRSymm2Dxy_args.argptr[2] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftKxx) - kernmulRSymm2Dxy_args.argptr[3] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftKyy) - kernmulRSymm2Dxy_args.argptr[4] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftKxy) - kernmulRSymm2Dxy_args.argptr[5] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_Nx) - kernmulRSymm2Dxy_args.argptr[6] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_Ny) - } + kernmulRSymm2Dxy_args.argptr[0] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftMx) + kernmulRSymm2Dxy_args.argptr[1] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftMy) + kernmulRSymm2Dxy_args.argptr[2] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftKxx) + kernmulRSymm2Dxy_args.argptr[3] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftKyy) + kernmulRSymm2Dxy_args.argptr[4] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_fftKxy) + kernmulRSymm2Dxy_args.argptr[5] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_Nx) + kernmulRSymm2Dxy_args.argptr[6] = unsafe.Pointer(&kernmulRSymm2Dxy_args.arg_Ny) +} // Wrapper for kernmulRSymm2Dxy CUDA kernel, asynchronous. -func k_kernmulRSymm2Dxy_async ( fftMx unsafe.Pointer, fftMy unsafe.Pointer, fftKxx unsafe.Pointer, fftKyy unsafe.Pointer, fftKxy unsafe.Pointer, Nx int, Ny int, cfg *config) { - if Synchronous{ // debug +func k_kernmulRSymm2Dxy_async(fftMx unsafe.Pointer, fftMy unsafe.Pointer, fftKxx unsafe.Pointer, fftKyy unsafe.Pointer, fftKxy unsafe.Pointer, Nx int, Ny int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("kernmulRSymm2Dxy") } @@ -52,44 +52,43 @@ func k_kernmulRSymm2Dxy_async ( fftMx unsafe.Pointer, fftMy unsafe.Pointer, fftK kernmulRSymm2Dxy_args.Lock() defer kernmulRSymm2Dxy_args.Unlock() - if kernmulRSymm2Dxy_code == 0{ + if kernmulRSymm2Dxy_code == 0 { kernmulRSymm2Dxy_code = fatbinLoad(kernmulRSymm2Dxy_map, "kernmulRSymm2Dxy") } - kernmulRSymm2Dxy_args.arg_fftMx = fftMx - kernmulRSymm2Dxy_args.arg_fftMy = fftMy - kernmulRSymm2Dxy_args.arg_fftKxx = fftKxx - kernmulRSymm2Dxy_args.arg_fftKyy = fftKyy - kernmulRSymm2Dxy_args.arg_fftKxy = fftKxy - kernmulRSymm2Dxy_args.arg_Nx = Nx - kernmulRSymm2Dxy_args.arg_Ny = Ny - + kernmulRSymm2Dxy_args.arg_fftMx = fftMx + kernmulRSymm2Dxy_args.arg_fftMy = fftMy + kernmulRSymm2Dxy_args.arg_fftKxx = fftKxx + kernmulRSymm2Dxy_args.arg_fftKyy = fftKyy + kernmulRSymm2Dxy_args.arg_fftKxy = fftKxy + kernmulRSymm2Dxy_args.arg_Nx = Nx + kernmulRSymm2Dxy_args.arg_Ny = Ny args := kernmulRSymm2Dxy_args.argptr[:] cu.LaunchKernel(kernmulRSymm2Dxy_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("kernmulRSymm2Dxy") } } // maps compute capability on PTX code for kernmulRSymm2Dxy kernel. -var kernmulRSymm2Dxy_map = map[int]string{ 0: "" , -30: kernmulRSymm2Dxy_ptx_30 , -35: kernmulRSymm2Dxy_ptx_35 , -37: kernmulRSymm2Dxy_ptx_37 , -50: kernmulRSymm2Dxy_ptx_50 , -52: kernmulRSymm2Dxy_ptx_52 , -53: kernmulRSymm2Dxy_ptx_53 , -60: kernmulRSymm2Dxy_ptx_60 , -61: kernmulRSymm2Dxy_ptx_61 , -70: kernmulRSymm2Dxy_ptx_70 , -75: kernmulRSymm2Dxy_ptx_75 } +var kernmulRSymm2Dxy_map = map[int]string{0: "", + 30: kernmulRSymm2Dxy_ptx_30, + 35: kernmulRSymm2Dxy_ptx_35, + 37: kernmulRSymm2Dxy_ptx_37, + 50: kernmulRSymm2Dxy_ptx_50, + 52: kernmulRSymm2Dxy_ptx_52, + 53: kernmulRSymm2Dxy_ptx_53, + 60: kernmulRSymm2Dxy_ptx_60, + 61: kernmulRSymm2Dxy_ptx_61, + 70: kernmulRSymm2Dxy_ptx_70, + 75: kernmulRSymm2Dxy_ptx_75} // kernmulRSymm2Dxy PTX code for various compute capabilities. -const( - kernmulRSymm2Dxy_ptx_30 = ` +const ( + kernmulRSymm2Dxy_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -181,7 +180,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_35 = ` + kernmulRSymm2Dxy_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -273,7 +272,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_37 = ` + kernmulRSymm2Dxy_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -365,7 +364,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_50 = ` + kernmulRSymm2Dxy_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -457,7 +456,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_52 = ` + kernmulRSymm2Dxy_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -549,7 +548,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_53 = ` + kernmulRSymm2Dxy_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -641,7 +640,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_60 = ` + kernmulRSymm2Dxy_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -733,7 +732,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_61 = ` + kernmulRSymm2Dxy_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -825,7 +824,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_70 = ` + kernmulRSymm2Dxy_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -917,7 +916,7 @@ BB0_2: ` - kernmulRSymm2Dxy_ptx_75 = ` + kernmulRSymm2Dxy_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1009,4 +1008,4 @@ BB0_2: ` - ) +) diff --git a/cuda/kernmulrsymm2dz_wrapper.go b/cuda/kernmulrsymm2dz_wrapper.go index 5868bff20..54eefa5e1 100644 --- a/cuda/kernmulrsymm2dz_wrapper.go +++ b/cuda/kernmulrsymm2dz_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for kernmulRSymm2Dz kernel var kernmulRSymm2Dz_code cu.Function // Stores the arguments for kernmulRSymm2Dz kernel invocation -type kernmulRSymm2Dz_args_t struct{ - arg_fftMz unsafe.Pointer - arg_fftKzz unsafe.Pointer - arg_Nx int - arg_Ny int - argptr [4]unsafe.Pointer +type kernmulRSymm2Dz_args_t struct { + arg_fftMz unsafe.Pointer + arg_fftKzz unsafe.Pointer + arg_Nx int + arg_Ny int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for kernmulRSymm2Dz kernel invocation var kernmulRSymm2Dz_args kernmulRSymm2Dz_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - kernmulRSymm2Dz_args.argptr[0] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_fftMz) - kernmulRSymm2Dz_args.argptr[1] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_fftKzz) - kernmulRSymm2Dz_args.argptr[2] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_Nx) - kernmulRSymm2Dz_args.argptr[3] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_Ny) - } + kernmulRSymm2Dz_args.argptr[0] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_fftMz) + kernmulRSymm2Dz_args.argptr[1] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_fftKzz) + kernmulRSymm2Dz_args.argptr[2] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_Nx) + kernmulRSymm2Dz_args.argptr[3] = unsafe.Pointer(&kernmulRSymm2Dz_args.arg_Ny) +} // Wrapper for kernmulRSymm2Dz CUDA kernel, asynchronous. -func k_kernmulRSymm2Dz_async ( fftMz unsafe.Pointer, fftKzz unsafe.Pointer, Nx int, Ny int, cfg *config) { - if Synchronous{ // debug +func k_kernmulRSymm2Dz_async(fftMz unsafe.Pointer, fftKzz unsafe.Pointer, Nx int, Ny int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("kernmulRSymm2Dz") } @@ -46,41 +46,40 @@ func k_kernmulRSymm2Dz_async ( fftMz unsafe.Pointer, fftKzz unsafe.Pointer, Nx i kernmulRSymm2Dz_args.Lock() defer kernmulRSymm2Dz_args.Unlock() - if kernmulRSymm2Dz_code == 0{ + if kernmulRSymm2Dz_code == 0 { kernmulRSymm2Dz_code = fatbinLoad(kernmulRSymm2Dz_map, "kernmulRSymm2Dz") } - kernmulRSymm2Dz_args.arg_fftMz = fftMz - kernmulRSymm2Dz_args.arg_fftKzz = fftKzz - kernmulRSymm2Dz_args.arg_Nx = Nx - kernmulRSymm2Dz_args.arg_Ny = Ny - + kernmulRSymm2Dz_args.arg_fftMz = fftMz + kernmulRSymm2Dz_args.arg_fftKzz = fftKzz + kernmulRSymm2Dz_args.arg_Nx = Nx + kernmulRSymm2Dz_args.arg_Ny = Ny args := kernmulRSymm2Dz_args.argptr[:] cu.LaunchKernel(kernmulRSymm2Dz_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("kernmulRSymm2Dz") } } // maps compute capability on PTX code for kernmulRSymm2Dz kernel. -var kernmulRSymm2Dz_map = map[int]string{ 0: "" , -30: kernmulRSymm2Dz_ptx_30 , -35: kernmulRSymm2Dz_ptx_35 , -37: kernmulRSymm2Dz_ptx_37 , -50: kernmulRSymm2Dz_ptx_50 , -52: kernmulRSymm2Dz_ptx_52 , -53: kernmulRSymm2Dz_ptx_53 , -60: kernmulRSymm2Dz_ptx_60 , -61: kernmulRSymm2Dz_ptx_61 , -70: kernmulRSymm2Dz_ptx_70 , -75: kernmulRSymm2Dz_ptx_75 } +var kernmulRSymm2Dz_map = map[int]string{0: "", + 30: kernmulRSymm2Dz_ptx_30, + 35: kernmulRSymm2Dz_ptx_35, + 37: kernmulRSymm2Dz_ptx_37, + 50: kernmulRSymm2Dz_ptx_50, + 52: kernmulRSymm2Dz_ptx_52, + 53: kernmulRSymm2Dz_ptx_53, + 60: kernmulRSymm2Dz_ptx_60, + 61: kernmulRSymm2Dz_ptx_61, + 70: kernmulRSymm2Dz_ptx_70, + 75: kernmulRSymm2Dz_ptx_75} // kernmulRSymm2Dz PTX code for various compute capabilities. -const( - kernmulRSymm2Dz_ptx_30 = ` +const ( + kernmulRSymm2Dz_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -146,7 +145,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_35 = ` + kernmulRSymm2Dz_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -212,7 +211,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_37 = ` + kernmulRSymm2Dz_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -278,7 +277,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_50 = ` + kernmulRSymm2Dz_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -344,7 +343,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_52 = ` + kernmulRSymm2Dz_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -410,7 +409,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_53 = ` + kernmulRSymm2Dz_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -476,7 +475,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_60 = ` + kernmulRSymm2Dz_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -542,7 +541,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_61 = ` + kernmulRSymm2Dz_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -608,7 +607,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_70 = ` + kernmulRSymm2Dz_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -674,7 +673,7 @@ BB0_2: ` - kernmulRSymm2Dz_ptx_75 = ` + kernmulRSymm2Dz_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -740,4 +739,4 @@ BB0_2: ` - ) +) diff --git a/cuda/kernmulrsymm3d_wrapper.go b/cuda/kernmulrsymm3d_wrapper.go index d63f6f916..e39f66683 100644 --- a/cuda/kernmulrsymm3d_wrapper.go +++ b/cuda/kernmulrsymm3d_wrapper.go @@ -5,56 +5,56 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for kernmulRSymm3D kernel var kernmulRSymm3D_code cu.Function // Stores the arguments for kernmulRSymm3D kernel invocation -type kernmulRSymm3D_args_t struct{ - arg_fftMx unsafe.Pointer - arg_fftMy unsafe.Pointer - arg_fftMz unsafe.Pointer - arg_fftKxx unsafe.Pointer - arg_fftKyy unsafe.Pointer - arg_fftKzz unsafe.Pointer - arg_fftKyz unsafe.Pointer - arg_fftKxz unsafe.Pointer - arg_fftKxy unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - argptr [12]unsafe.Pointer +type kernmulRSymm3D_args_t struct { + arg_fftMx unsafe.Pointer + arg_fftMy unsafe.Pointer + arg_fftMz unsafe.Pointer + arg_fftKxx unsafe.Pointer + arg_fftKyy unsafe.Pointer + arg_fftKzz unsafe.Pointer + arg_fftKyz unsafe.Pointer + arg_fftKxz unsafe.Pointer + arg_fftKxy unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + argptr [12]unsafe.Pointer sync.Mutex } // Stores the arguments for kernmulRSymm3D kernel invocation var kernmulRSymm3D_args kernmulRSymm3D_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - kernmulRSymm3D_args.argptr[0] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftMx) - kernmulRSymm3D_args.argptr[1] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftMy) - kernmulRSymm3D_args.argptr[2] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftMz) - kernmulRSymm3D_args.argptr[3] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKxx) - kernmulRSymm3D_args.argptr[4] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKyy) - kernmulRSymm3D_args.argptr[5] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKzz) - kernmulRSymm3D_args.argptr[6] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKyz) - kernmulRSymm3D_args.argptr[7] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKxz) - kernmulRSymm3D_args.argptr[8] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKxy) - kernmulRSymm3D_args.argptr[9] = unsafe.Pointer(&kernmulRSymm3D_args.arg_Nx) - kernmulRSymm3D_args.argptr[10] = unsafe.Pointer(&kernmulRSymm3D_args.arg_Ny) - kernmulRSymm3D_args.argptr[11] = unsafe.Pointer(&kernmulRSymm3D_args.arg_Nz) - } + kernmulRSymm3D_args.argptr[0] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftMx) + kernmulRSymm3D_args.argptr[1] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftMy) + kernmulRSymm3D_args.argptr[2] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftMz) + kernmulRSymm3D_args.argptr[3] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKxx) + kernmulRSymm3D_args.argptr[4] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKyy) + kernmulRSymm3D_args.argptr[5] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKzz) + kernmulRSymm3D_args.argptr[6] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKyz) + kernmulRSymm3D_args.argptr[7] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKxz) + kernmulRSymm3D_args.argptr[8] = unsafe.Pointer(&kernmulRSymm3D_args.arg_fftKxy) + kernmulRSymm3D_args.argptr[9] = unsafe.Pointer(&kernmulRSymm3D_args.arg_Nx) + kernmulRSymm3D_args.argptr[10] = unsafe.Pointer(&kernmulRSymm3D_args.arg_Ny) + kernmulRSymm3D_args.argptr[11] = unsafe.Pointer(&kernmulRSymm3D_args.arg_Nz) +} // Wrapper for kernmulRSymm3D CUDA kernel, asynchronous. -func k_kernmulRSymm3D_async ( fftMx unsafe.Pointer, fftMy unsafe.Pointer, fftMz unsafe.Pointer, fftKxx unsafe.Pointer, fftKyy unsafe.Pointer, fftKzz unsafe.Pointer, fftKyz unsafe.Pointer, fftKxz unsafe.Pointer, fftKxy unsafe.Pointer, Nx int, Ny int, Nz int, cfg *config) { - if Synchronous{ // debug +func k_kernmulRSymm3D_async(fftMx unsafe.Pointer, fftMy unsafe.Pointer, fftMz unsafe.Pointer, fftKxx unsafe.Pointer, fftKyy unsafe.Pointer, fftKzz unsafe.Pointer, fftKyz unsafe.Pointer, fftKxz unsafe.Pointer, fftKxy unsafe.Pointer, Nx int, Ny int, Nz int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("kernmulRSymm3D") } @@ -62,49 +62,48 @@ func k_kernmulRSymm3D_async ( fftMx unsafe.Pointer, fftMy unsafe.Pointer, fftMz kernmulRSymm3D_args.Lock() defer kernmulRSymm3D_args.Unlock() - if kernmulRSymm3D_code == 0{ + if kernmulRSymm3D_code == 0 { kernmulRSymm3D_code = fatbinLoad(kernmulRSymm3D_map, "kernmulRSymm3D") } - kernmulRSymm3D_args.arg_fftMx = fftMx - kernmulRSymm3D_args.arg_fftMy = fftMy - kernmulRSymm3D_args.arg_fftMz = fftMz - kernmulRSymm3D_args.arg_fftKxx = fftKxx - kernmulRSymm3D_args.arg_fftKyy = fftKyy - kernmulRSymm3D_args.arg_fftKzz = fftKzz - kernmulRSymm3D_args.arg_fftKyz = fftKyz - kernmulRSymm3D_args.arg_fftKxz = fftKxz - kernmulRSymm3D_args.arg_fftKxy = fftKxy - kernmulRSymm3D_args.arg_Nx = Nx - kernmulRSymm3D_args.arg_Ny = Ny - kernmulRSymm3D_args.arg_Nz = Nz - + kernmulRSymm3D_args.arg_fftMx = fftMx + kernmulRSymm3D_args.arg_fftMy = fftMy + kernmulRSymm3D_args.arg_fftMz = fftMz + kernmulRSymm3D_args.arg_fftKxx = fftKxx + kernmulRSymm3D_args.arg_fftKyy = fftKyy + kernmulRSymm3D_args.arg_fftKzz = fftKzz + kernmulRSymm3D_args.arg_fftKyz = fftKyz + kernmulRSymm3D_args.arg_fftKxz = fftKxz + kernmulRSymm3D_args.arg_fftKxy = fftKxy + kernmulRSymm3D_args.arg_Nx = Nx + kernmulRSymm3D_args.arg_Ny = Ny + kernmulRSymm3D_args.arg_Nz = Nz args := kernmulRSymm3D_args.argptr[:] cu.LaunchKernel(kernmulRSymm3D_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("kernmulRSymm3D") } } // maps compute capability on PTX code for kernmulRSymm3D kernel. -var kernmulRSymm3D_map = map[int]string{ 0: "" , -30: kernmulRSymm3D_ptx_30 , -35: kernmulRSymm3D_ptx_35 , -37: kernmulRSymm3D_ptx_37 , -50: kernmulRSymm3D_ptx_50 , -52: kernmulRSymm3D_ptx_52 , -53: kernmulRSymm3D_ptx_53 , -60: kernmulRSymm3D_ptx_60 , -61: kernmulRSymm3D_ptx_61 , -70: kernmulRSymm3D_ptx_70 , -75: kernmulRSymm3D_ptx_75 } +var kernmulRSymm3D_map = map[int]string{0: "", + 30: kernmulRSymm3D_ptx_30, + 35: kernmulRSymm3D_ptx_35, + 37: kernmulRSymm3D_ptx_37, + 50: kernmulRSymm3D_ptx_50, + 52: kernmulRSymm3D_ptx_52, + 53: kernmulRSymm3D_ptx_53, + 60: kernmulRSymm3D_ptx_60, + 61: kernmulRSymm3D_ptx_61, + 70: kernmulRSymm3D_ptx_70, + 75: kernmulRSymm3D_ptx_75} // kernmulRSymm3D PTX code for various compute capabilities. -const( - kernmulRSymm3D_ptx_30 = ` +const ( + kernmulRSymm3D_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -251,7 +250,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_35 = ` + kernmulRSymm3D_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -398,7 +397,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_37 = ` + kernmulRSymm3D_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -545,7 +544,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_50 = ` + kernmulRSymm3D_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -692,7 +691,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_52 = ` + kernmulRSymm3D_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -839,7 +838,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_53 = ` + kernmulRSymm3D_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -986,7 +985,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_60 = ` + kernmulRSymm3D_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -1133,7 +1132,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_61 = ` + kernmulRSymm3D_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1280,7 +1279,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_70 = ` + kernmulRSymm3D_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1427,7 +1426,7 @@ BB0_2: ` - kernmulRSymm3D_ptx_75 = ` + kernmulRSymm3D_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1574,4 +1573,4 @@ BB0_2: ` - ) +) diff --git a/cuda/llnoprecess_wrapper.go b/cuda/llnoprecess_wrapper.go index 915fd5ffb..786d44bd7 100644 --- a/cuda/llnoprecess_wrapper.go +++ b/cuda/llnoprecess_wrapper.go @@ -5,52 +5,52 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for llnoprecess kernel var llnoprecess_code cu.Function // Stores the arguments for llnoprecess kernel invocation -type llnoprecess_args_t struct{ - arg_tx unsafe.Pointer - arg_ty unsafe.Pointer - arg_tz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_hx unsafe.Pointer - arg_hy unsafe.Pointer - arg_hz unsafe.Pointer - arg_N int - argptr [10]unsafe.Pointer +type llnoprecess_args_t struct { + arg_tx unsafe.Pointer + arg_ty unsafe.Pointer + arg_tz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_hx unsafe.Pointer + arg_hy unsafe.Pointer + arg_hz unsafe.Pointer + arg_N int + argptr [10]unsafe.Pointer sync.Mutex } // Stores the arguments for llnoprecess kernel invocation var llnoprecess_args llnoprecess_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - llnoprecess_args.argptr[0] = unsafe.Pointer(&llnoprecess_args.arg_tx) - llnoprecess_args.argptr[1] = unsafe.Pointer(&llnoprecess_args.arg_ty) - llnoprecess_args.argptr[2] = unsafe.Pointer(&llnoprecess_args.arg_tz) - llnoprecess_args.argptr[3] = unsafe.Pointer(&llnoprecess_args.arg_mx) - llnoprecess_args.argptr[4] = unsafe.Pointer(&llnoprecess_args.arg_my) - llnoprecess_args.argptr[5] = unsafe.Pointer(&llnoprecess_args.arg_mz) - llnoprecess_args.argptr[6] = unsafe.Pointer(&llnoprecess_args.arg_hx) - llnoprecess_args.argptr[7] = unsafe.Pointer(&llnoprecess_args.arg_hy) - llnoprecess_args.argptr[8] = unsafe.Pointer(&llnoprecess_args.arg_hz) - llnoprecess_args.argptr[9] = unsafe.Pointer(&llnoprecess_args.arg_N) - } + llnoprecess_args.argptr[0] = unsafe.Pointer(&llnoprecess_args.arg_tx) + llnoprecess_args.argptr[1] = unsafe.Pointer(&llnoprecess_args.arg_ty) + llnoprecess_args.argptr[2] = unsafe.Pointer(&llnoprecess_args.arg_tz) + llnoprecess_args.argptr[3] = unsafe.Pointer(&llnoprecess_args.arg_mx) + llnoprecess_args.argptr[4] = unsafe.Pointer(&llnoprecess_args.arg_my) + llnoprecess_args.argptr[5] = unsafe.Pointer(&llnoprecess_args.arg_mz) + llnoprecess_args.argptr[6] = unsafe.Pointer(&llnoprecess_args.arg_hx) + llnoprecess_args.argptr[7] = unsafe.Pointer(&llnoprecess_args.arg_hy) + llnoprecess_args.argptr[8] = unsafe.Pointer(&llnoprecess_args.arg_hz) + llnoprecess_args.argptr[9] = unsafe.Pointer(&llnoprecess_args.arg_N) +} // Wrapper for llnoprecess CUDA kernel, asynchronous. -func k_llnoprecess_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, hx unsafe.Pointer, hy unsafe.Pointer, hz unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_llnoprecess_async(tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, hx unsafe.Pointer, hy unsafe.Pointer, hz unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("llnoprecess") } @@ -58,47 +58,46 @@ func k_llnoprecess_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Point llnoprecess_args.Lock() defer llnoprecess_args.Unlock() - if llnoprecess_code == 0{ + if llnoprecess_code == 0 { llnoprecess_code = fatbinLoad(llnoprecess_map, "llnoprecess") } - llnoprecess_args.arg_tx = tx - llnoprecess_args.arg_ty = ty - llnoprecess_args.arg_tz = tz - llnoprecess_args.arg_mx = mx - llnoprecess_args.arg_my = my - llnoprecess_args.arg_mz = mz - llnoprecess_args.arg_hx = hx - llnoprecess_args.arg_hy = hy - llnoprecess_args.arg_hz = hz - llnoprecess_args.arg_N = N - + llnoprecess_args.arg_tx = tx + llnoprecess_args.arg_ty = ty + llnoprecess_args.arg_tz = tz + llnoprecess_args.arg_mx = mx + llnoprecess_args.arg_my = my + llnoprecess_args.arg_mz = mz + llnoprecess_args.arg_hx = hx + llnoprecess_args.arg_hy = hy + llnoprecess_args.arg_hz = hz + llnoprecess_args.arg_N = N args := llnoprecess_args.argptr[:] cu.LaunchKernel(llnoprecess_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("llnoprecess") } } // maps compute capability on PTX code for llnoprecess kernel. -var llnoprecess_map = map[int]string{ 0: "" , -30: llnoprecess_ptx_30 , -35: llnoprecess_ptx_35 , -37: llnoprecess_ptx_37 , -50: llnoprecess_ptx_50 , -52: llnoprecess_ptx_52 , -53: llnoprecess_ptx_53 , -60: llnoprecess_ptx_60 , -61: llnoprecess_ptx_61 , -70: llnoprecess_ptx_70 , -75: llnoprecess_ptx_75 } +var llnoprecess_map = map[int]string{0: "", + 30: llnoprecess_ptx_30, + 35: llnoprecess_ptx_35, + 37: llnoprecess_ptx_37, + 50: llnoprecess_ptx_50, + 52: llnoprecess_ptx_52, + 53: llnoprecess_ptx_53, + 60: llnoprecess_ptx_60, + 61: llnoprecess_ptx_61, + 70: llnoprecess_ptx_70, + 75: llnoprecess_ptx_75} // llnoprecess PTX code for various compute capabilities. -const( - llnoprecess_ptx_30 = ` +const ( + llnoprecess_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -200,7 +199,7 @@ BB0_2: ` - llnoprecess_ptx_35 = ` + llnoprecess_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -302,7 +301,7 @@ BB0_2: ` - llnoprecess_ptx_37 = ` + llnoprecess_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -404,7 +403,7 @@ BB0_2: ` - llnoprecess_ptx_50 = ` + llnoprecess_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -506,7 +505,7 @@ BB0_2: ` - llnoprecess_ptx_52 = ` + llnoprecess_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -608,7 +607,7 @@ BB0_2: ` - llnoprecess_ptx_53 = ` + llnoprecess_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -710,7 +709,7 @@ BB0_2: ` - llnoprecess_ptx_60 = ` + llnoprecess_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -812,7 +811,7 @@ BB0_2: ` - llnoprecess_ptx_61 = ` + llnoprecess_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -914,7 +913,7 @@ BB0_2: ` - llnoprecess_ptx_70 = ` + llnoprecess_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1016,7 +1015,7 @@ BB0_2: ` - llnoprecess_ptx_75 = ` + llnoprecess_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1118,4 +1117,4 @@ BB0_2: ` - ) +) diff --git a/cuda/lltorque2_wrapper.go b/cuda/lltorque2_wrapper.go index a88fc1738..099482417 100644 --- a/cuda/lltorque2_wrapper.go +++ b/cuda/lltorque2_wrapper.go @@ -5,56 +5,56 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for lltorque2 kernel var lltorque2_code cu.Function // Stores the arguments for lltorque2 kernel invocation -type lltorque2_args_t struct{ - arg_tx unsafe.Pointer - arg_ty unsafe.Pointer - arg_tz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_hx unsafe.Pointer - arg_hy unsafe.Pointer - arg_hz unsafe.Pointer - arg_alpha_ unsafe.Pointer - arg_alpha_mul float32 - arg_N int - argptr [12]unsafe.Pointer +type lltorque2_args_t struct { + arg_tx unsafe.Pointer + arg_ty unsafe.Pointer + arg_tz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_hx unsafe.Pointer + arg_hy unsafe.Pointer + arg_hz unsafe.Pointer + arg_alpha_ unsafe.Pointer + arg_alpha_mul float32 + arg_N int + argptr [12]unsafe.Pointer sync.Mutex } // Stores the arguments for lltorque2 kernel invocation var lltorque2_args lltorque2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - lltorque2_args.argptr[0] = unsafe.Pointer(&lltorque2_args.arg_tx) - lltorque2_args.argptr[1] = unsafe.Pointer(&lltorque2_args.arg_ty) - lltorque2_args.argptr[2] = unsafe.Pointer(&lltorque2_args.arg_tz) - lltorque2_args.argptr[3] = unsafe.Pointer(&lltorque2_args.arg_mx) - lltorque2_args.argptr[4] = unsafe.Pointer(&lltorque2_args.arg_my) - lltorque2_args.argptr[5] = unsafe.Pointer(&lltorque2_args.arg_mz) - lltorque2_args.argptr[6] = unsafe.Pointer(&lltorque2_args.arg_hx) - lltorque2_args.argptr[7] = unsafe.Pointer(&lltorque2_args.arg_hy) - lltorque2_args.argptr[8] = unsafe.Pointer(&lltorque2_args.arg_hz) - lltorque2_args.argptr[9] = unsafe.Pointer(&lltorque2_args.arg_alpha_) - lltorque2_args.argptr[10] = unsafe.Pointer(&lltorque2_args.arg_alpha_mul) - lltorque2_args.argptr[11] = unsafe.Pointer(&lltorque2_args.arg_N) - } + lltorque2_args.argptr[0] = unsafe.Pointer(&lltorque2_args.arg_tx) + lltorque2_args.argptr[1] = unsafe.Pointer(&lltorque2_args.arg_ty) + lltorque2_args.argptr[2] = unsafe.Pointer(&lltorque2_args.arg_tz) + lltorque2_args.argptr[3] = unsafe.Pointer(&lltorque2_args.arg_mx) + lltorque2_args.argptr[4] = unsafe.Pointer(&lltorque2_args.arg_my) + lltorque2_args.argptr[5] = unsafe.Pointer(&lltorque2_args.arg_mz) + lltorque2_args.argptr[6] = unsafe.Pointer(&lltorque2_args.arg_hx) + lltorque2_args.argptr[7] = unsafe.Pointer(&lltorque2_args.arg_hy) + lltorque2_args.argptr[8] = unsafe.Pointer(&lltorque2_args.arg_hz) + lltorque2_args.argptr[9] = unsafe.Pointer(&lltorque2_args.arg_alpha_) + lltorque2_args.argptr[10] = unsafe.Pointer(&lltorque2_args.arg_alpha_mul) + lltorque2_args.argptr[11] = unsafe.Pointer(&lltorque2_args.arg_N) +} // Wrapper for lltorque2 CUDA kernel, asynchronous. -func k_lltorque2_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, hx unsafe.Pointer, hy unsafe.Pointer, hz unsafe.Pointer, alpha_ unsafe.Pointer, alpha_mul float32, N int, cfg *config) { - if Synchronous{ // debug +func k_lltorque2_async(tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, hx unsafe.Pointer, hy unsafe.Pointer, hz unsafe.Pointer, alpha_ unsafe.Pointer, alpha_mul float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("lltorque2") } @@ -62,49 +62,48 @@ func k_lltorque2_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer lltorque2_args.Lock() defer lltorque2_args.Unlock() - if lltorque2_code == 0{ + if lltorque2_code == 0 { lltorque2_code = fatbinLoad(lltorque2_map, "lltorque2") } - lltorque2_args.arg_tx = tx - lltorque2_args.arg_ty = ty - lltorque2_args.arg_tz = tz - lltorque2_args.arg_mx = mx - lltorque2_args.arg_my = my - lltorque2_args.arg_mz = mz - lltorque2_args.arg_hx = hx - lltorque2_args.arg_hy = hy - lltorque2_args.arg_hz = hz - lltorque2_args.arg_alpha_ = alpha_ - lltorque2_args.arg_alpha_mul = alpha_mul - lltorque2_args.arg_N = N - + lltorque2_args.arg_tx = tx + lltorque2_args.arg_ty = ty + lltorque2_args.arg_tz = tz + lltorque2_args.arg_mx = mx + lltorque2_args.arg_my = my + lltorque2_args.arg_mz = mz + lltorque2_args.arg_hx = hx + lltorque2_args.arg_hy = hy + lltorque2_args.arg_hz = hz + lltorque2_args.arg_alpha_ = alpha_ + lltorque2_args.arg_alpha_mul = alpha_mul + lltorque2_args.arg_N = N args := lltorque2_args.argptr[:] cu.LaunchKernel(lltorque2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("lltorque2") } } // maps compute capability on PTX code for lltorque2 kernel. -var lltorque2_map = map[int]string{ 0: "" , -30: lltorque2_ptx_30 , -35: lltorque2_ptx_35 , -37: lltorque2_ptx_37 , -50: lltorque2_ptx_50 , -52: lltorque2_ptx_52 , -53: lltorque2_ptx_53 , -60: lltorque2_ptx_60 , -61: lltorque2_ptx_61 , -70: lltorque2_ptx_70 , -75: lltorque2_ptx_75 } +var lltorque2_map = map[int]string{0: "", + 30: lltorque2_ptx_30, + 35: lltorque2_ptx_35, + 37: lltorque2_ptx_37, + 50: lltorque2_ptx_50, + 52: lltorque2_ptx_52, + 53: lltorque2_ptx_53, + 60: lltorque2_ptx_60, + 61: lltorque2_ptx_61, + 70: lltorque2_ptx_70, + 75: lltorque2_ptx_75} // lltorque2 PTX code for various compute capabilities. -const( - lltorque2_ptx_30 = ` +const ( + lltorque2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -225,7 +224,7 @@ BB0_4: ` - lltorque2_ptx_35 = ` + lltorque2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -346,7 +345,7 @@ BB0_4: ` - lltorque2_ptx_37 = ` + lltorque2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -467,7 +466,7 @@ BB0_4: ` - lltorque2_ptx_50 = ` + lltorque2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -588,7 +587,7 @@ BB0_4: ` - lltorque2_ptx_52 = ` + lltorque2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -709,7 +708,7 @@ BB0_4: ` - lltorque2_ptx_53 = ` + lltorque2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -830,7 +829,7 @@ BB0_4: ` - lltorque2_ptx_60 = ` + lltorque2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -951,7 +950,7 @@ BB0_4: ` - lltorque2_ptx_61 = ` + lltorque2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1072,7 +1071,7 @@ BB0_4: ` - lltorque2_ptx_70 = ` + lltorque2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1193,7 +1192,7 @@ BB0_4: ` - lltorque2_ptx_75 = ` + lltorque2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1314,4 +1313,4 @@ BB0_4: ` - ) +) diff --git a/cuda/madd2_wrapper.go b/cuda/madd2_wrapper.go index 3c684f849..3730665e8 100644 --- a/cuda/madd2_wrapper.go +++ b/cuda/madd2_wrapper.go @@ -5,44 +5,44 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for madd2 kernel var madd2_code cu.Function // Stores the arguments for madd2 kernel invocation -type madd2_args_t struct{ - arg_dst unsafe.Pointer - arg_src1 unsafe.Pointer - arg_fac1 float32 - arg_src2 unsafe.Pointer - arg_fac2 float32 - arg_N int - argptr [6]unsafe.Pointer +type madd2_args_t struct { + arg_dst unsafe.Pointer + arg_src1 unsafe.Pointer + arg_fac1 float32 + arg_src2 unsafe.Pointer + arg_fac2 float32 + arg_N int + argptr [6]unsafe.Pointer sync.Mutex } // Stores the arguments for madd2 kernel invocation var madd2_args madd2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - madd2_args.argptr[0] = unsafe.Pointer(&madd2_args.arg_dst) - madd2_args.argptr[1] = unsafe.Pointer(&madd2_args.arg_src1) - madd2_args.argptr[2] = unsafe.Pointer(&madd2_args.arg_fac1) - madd2_args.argptr[3] = unsafe.Pointer(&madd2_args.arg_src2) - madd2_args.argptr[4] = unsafe.Pointer(&madd2_args.arg_fac2) - madd2_args.argptr[5] = unsafe.Pointer(&madd2_args.arg_N) - } + madd2_args.argptr[0] = unsafe.Pointer(&madd2_args.arg_dst) + madd2_args.argptr[1] = unsafe.Pointer(&madd2_args.arg_src1) + madd2_args.argptr[2] = unsafe.Pointer(&madd2_args.arg_fac1) + madd2_args.argptr[3] = unsafe.Pointer(&madd2_args.arg_src2) + madd2_args.argptr[4] = unsafe.Pointer(&madd2_args.arg_fac2) + madd2_args.argptr[5] = unsafe.Pointer(&madd2_args.arg_N) +} // Wrapper for madd2 CUDA kernel, asynchronous. -func k_madd2_async ( dst unsafe.Pointer, src1 unsafe.Pointer, fac1 float32, src2 unsafe.Pointer, fac2 float32, N int, cfg *config) { - if Synchronous{ // debug +func k_madd2_async(dst unsafe.Pointer, src1 unsafe.Pointer, fac1 float32, src2 unsafe.Pointer, fac2 float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("madd2") } @@ -50,43 +50,42 @@ func k_madd2_async ( dst unsafe.Pointer, src1 unsafe.Pointer, fac1 float32, src2 madd2_args.Lock() defer madd2_args.Unlock() - if madd2_code == 0{ + if madd2_code == 0 { madd2_code = fatbinLoad(madd2_map, "madd2") } - madd2_args.arg_dst = dst - madd2_args.arg_src1 = src1 - madd2_args.arg_fac1 = fac1 - madd2_args.arg_src2 = src2 - madd2_args.arg_fac2 = fac2 - madd2_args.arg_N = N - + madd2_args.arg_dst = dst + madd2_args.arg_src1 = src1 + madd2_args.arg_fac1 = fac1 + madd2_args.arg_src2 = src2 + madd2_args.arg_fac2 = fac2 + madd2_args.arg_N = N args := madd2_args.argptr[:] cu.LaunchKernel(madd2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("madd2") } } // maps compute capability on PTX code for madd2 kernel. -var madd2_map = map[int]string{ 0: "" , -30: madd2_ptx_30 , -35: madd2_ptx_35 , -37: madd2_ptx_37 , -50: madd2_ptx_50 , -52: madd2_ptx_52 , -53: madd2_ptx_53 , -60: madd2_ptx_60 , -61: madd2_ptx_61 , -70: madd2_ptx_70 , -75: madd2_ptx_75 } +var madd2_map = map[int]string{0: "", + 30: madd2_ptx_30, + 35: madd2_ptx_35, + 37: madd2_ptx_37, + 50: madd2_ptx_50, + 52: madd2_ptx_52, + 53: madd2_ptx_53, + 60: madd2_ptx_60, + 61: madd2_ptx_61, + 70: madd2_ptx_70, + 75: madd2_ptx_75} // madd2 PTX code for various compute capabilities. -const( - madd2_ptx_30 = ` +const ( + madd2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -143,7 +142,7 @@ BB0_2: ` - madd2_ptx_35 = ` + madd2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -200,7 +199,7 @@ BB0_2: ` - madd2_ptx_37 = ` + madd2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -257,7 +256,7 @@ BB0_2: ` - madd2_ptx_50 = ` + madd2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -314,7 +313,7 @@ BB0_2: ` - madd2_ptx_52 = ` + madd2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -371,7 +370,7 @@ BB0_2: ` - madd2_ptx_53 = ` + madd2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -428,7 +427,7 @@ BB0_2: ` - madd2_ptx_60 = ` + madd2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -485,7 +484,7 @@ BB0_2: ` - madd2_ptx_61 = ` + madd2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -542,7 +541,7 @@ BB0_2: ` - madd2_ptx_70 = ` + madd2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -599,7 +598,7 @@ BB0_2: ` - madd2_ptx_75 = ` + madd2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -656,4 +655,4 @@ BB0_2: ` - ) +) diff --git a/cuda/madd3_wrapper.go b/cuda/madd3_wrapper.go index 659ffa2d5..1f9ca91a2 100644 --- a/cuda/madd3_wrapper.go +++ b/cuda/madd3_wrapper.go @@ -5,48 +5,48 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for madd3 kernel var madd3_code cu.Function // Stores the arguments for madd3 kernel invocation -type madd3_args_t struct{ - arg_dst unsafe.Pointer - arg_src1 unsafe.Pointer - arg_fac1 float32 - arg_src2 unsafe.Pointer - arg_fac2 float32 - arg_src3 unsafe.Pointer - arg_fac3 float32 - arg_N int - argptr [8]unsafe.Pointer +type madd3_args_t struct { + arg_dst unsafe.Pointer + arg_src1 unsafe.Pointer + arg_fac1 float32 + arg_src2 unsafe.Pointer + arg_fac2 float32 + arg_src3 unsafe.Pointer + arg_fac3 float32 + arg_N int + argptr [8]unsafe.Pointer sync.Mutex } // Stores the arguments for madd3 kernel invocation var madd3_args madd3_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - madd3_args.argptr[0] = unsafe.Pointer(&madd3_args.arg_dst) - madd3_args.argptr[1] = unsafe.Pointer(&madd3_args.arg_src1) - madd3_args.argptr[2] = unsafe.Pointer(&madd3_args.arg_fac1) - madd3_args.argptr[3] = unsafe.Pointer(&madd3_args.arg_src2) - madd3_args.argptr[4] = unsafe.Pointer(&madd3_args.arg_fac2) - madd3_args.argptr[5] = unsafe.Pointer(&madd3_args.arg_src3) - madd3_args.argptr[6] = unsafe.Pointer(&madd3_args.arg_fac3) - madd3_args.argptr[7] = unsafe.Pointer(&madd3_args.arg_N) - } + madd3_args.argptr[0] = unsafe.Pointer(&madd3_args.arg_dst) + madd3_args.argptr[1] = unsafe.Pointer(&madd3_args.arg_src1) + madd3_args.argptr[2] = unsafe.Pointer(&madd3_args.arg_fac1) + madd3_args.argptr[3] = unsafe.Pointer(&madd3_args.arg_src2) + madd3_args.argptr[4] = unsafe.Pointer(&madd3_args.arg_fac2) + madd3_args.argptr[5] = unsafe.Pointer(&madd3_args.arg_src3) + madd3_args.argptr[6] = unsafe.Pointer(&madd3_args.arg_fac3) + madd3_args.argptr[7] = unsafe.Pointer(&madd3_args.arg_N) +} // Wrapper for madd3 CUDA kernel, asynchronous. -func k_madd3_async ( dst unsafe.Pointer, src1 unsafe.Pointer, fac1 float32, src2 unsafe.Pointer, fac2 float32, src3 unsafe.Pointer, fac3 float32, N int, cfg *config) { - if Synchronous{ // debug +func k_madd3_async(dst unsafe.Pointer, src1 unsafe.Pointer, fac1 float32, src2 unsafe.Pointer, fac2 float32, src3 unsafe.Pointer, fac3 float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("madd3") } @@ -54,45 +54,44 @@ func k_madd3_async ( dst unsafe.Pointer, src1 unsafe.Pointer, fac1 float32, src2 madd3_args.Lock() defer madd3_args.Unlock() - if madd3_code == 0{ + if madd3_code == 0 { madd3_code = fatbinLoad(madd3_map, "madd3") } - madd3_args.arg_dst = dst - madd3_args.arg_src1 = src1 - madd3_args.arg_fac1 = fac1 - madd3_args.arg_src2 = src2 - madd3_args.arg_fac2 = fac2 - madd3_args.arg_src3 = src3 - madd3_args.arg_fac3 = fac3 - madd3_args.arg_N = N - + madd3_args.arg_dst = dst + madd3_args.arg_src1 = src1 + madd3_args.arg_fac1 = fac1 + madd3_args.arg_src2 = src2 + madd3_args.arg_fac2 = fac2 + madd3_args.arg_src3 = src3 + madd3_args.arg_fac3 = fac3 + madd3_args.arg_N = N args := madd3_args.argptr[:] cu.LaunchKernel(madd3_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("madd3") } } // maps compute capability on PTX code for madd3 kernel. -var madd3_map = map[int]string{ 0: "" , -30: madd3_ptx_30 , -35: madd3_ptx_35 , -37: madd3_ptx_37 , -50: madd3_ptx_50 , -52: madd3_ptx_52 , -53: madd3_ptx_53 , -60: madd3_ptx_60 , -61: madd3_ptx_61 , -70: madd3_ptx_70 , -75: madd3_ptx_75 } +var madd3_map = map[int]string{0: "", + 30: madd3_ptx_30, + 35: madd3_ptx_35, + 37: madd3_ptx_37, + 50: madd3_ptx_50, + 52: madd3_ptx_52, + 53: madd3_ptx_53, + 60: madd3_ptx_60, + 61: madd3_ptx_61, + 70: madd3_ptx_70, + 75: madd3_ptx_75} // madd3 PTX code for various compute capabilities. -const( - madd3_ptx_30 = ` +const ( + madd3_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -157,7 +156,7 @@ BB0_2: ` - madd3_ptx_35 = ` + madd3_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -222,7 +221,7 @@ BB0_2: ` - madd3_ptx_37 = ` + madd3_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -287,7 +286,7 @@ BB0_2: ` - madd3_ptx_50 = ` + madd3_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -352,7 +351,7 @@ BB0_2: ` - madd3_ptx_52 = ` + madd3_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -417,7 +416,7 @@ BB0_2: ` - madd3_ptx_53 = ` + madd3_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -482,7 +481,7 @@ BB0_2: ` - madd3_ptx_60 = ` + madd3_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -547,7 +546,7 @@ BB0_2: ` - madd3_ptx_61 = ` + madd3_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -612,7 +611,7 @@ BB0_2: ` - madd3_ptx_70 = ` + madd3_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -677,7 +676,7 @@ BB0_2: ` - madd3_ptx_75 = ` + madd3_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -742,4 +741,4 @@ BB0_2: ` - ) +) diff --git a/cuda/magnetoelasticfield_wrapper.go b/cuda/magnetoelasticfield_wrapper.go index fd68a637a..4686de41d 100644 --- a/cuda/magnetoelasticfield_wrapper.go +++ b/cuda/magnetoelasticfield_wrapper.go @@ -5,82 +5,82 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for addmagnetoelasticfield kernel var addmagnetoelasticfield_code cu.Function // Stores the arguments for addmagnetoelasticfield kernel invocation -type addmagnetoelasticfield_args_t struct{ - arg_Bx unsafe.Pointer - arg_By unsafe.Pointer - arg_Bz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_exx_ unsafe.Pointer - arg_exx_mul float32 - arg_eyy_ unsafe.Pointer - arg_eyy_mul float32 - arg_ezz_ unsafe.Pointer - arg_ezz_mul float32 - arg_exy_ unsafe.Pointer - arg_exy_mul float32 - arg_exz_ unsafe.Pointer - arg_exz_mul float32 - arg_eyz_ unsafe.Pointer - arg_eyz_mul float32 - arg_B1_ unsafe.Pointer - arg_B1_mul float32 - arg_B2_ unsafe.Pointer - arg_B2_mul float32 - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_N int - argptr [25]unsafe.Pointer +type addmagnetoelasticfield_args_t struct { + arg_Bx unsafe.Pointer + arg_By unsafe.Pointer + arg_Bz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_exx_ unsafe.Pointer + arg_exx_mul float32 + arg_eyy_ unsafe.Pointer + arg_eyy_mul float32 + arg_ezz_ unsafe.Pointer + arg_ezz_mul float32 + arg_exy_ unsafe.Pointer + arg_exy_mul float32 + arg_exz_ unsafe.Pointer + arg_exz_mul float32 + arg_eyz_ unsafe.Pointer + arg_eyz_mul float32 + arg_B1_ unsafe.Pointer + arg_B1_mul float32 + arg_B2_ unsafe.Pointer + arg_B2_mul float32 + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_N int + argptr [25]unsafe.Pointer sync.Mutex } // Stores the arguments for addmagnetoelasticfield kernel invocation var addmagnetoelasticfield_args addmagnetoelasticfield_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - addmagnetoelasticfield_args.argptr[0] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Bx) - addmagnetoelasticfield_args.argptr[1] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_By) - addmagnetoelasticfield_args.argptr[2] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Bz) - addmagnetoelasticfield_args.argptr[3] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_mx) - addmagnetoelasticfield_args.argptr[4] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_my) - addmagnetoelasticfield_args.argptr[5] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_mz) - addmagnetoelasticfield_args.argptr[6] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exx_) - addmagnetoelasticfield_args.argptr[7] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exx_mul) - addmagnetoelasticfield_args.argptr[8] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyy_) - addmagnetoelasticfield_args.argptr[9] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyy_mul) - addmagnetoelasticfield_args.argptr[10] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_ezz_) - addmagnetoelasticfield_args.argptr[11] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_ezz_mul) - addmagnetoelasticfield_args.argptr[12] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exy_) - addmagnetoelasticfield_args.argptr[13] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exy_mul) - addmagnetoelasticfield_args.argptr[14] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exz_) - addmagnetoelasticfield_args.argptr[15] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exz_mul) - addmagnetoelasticfield_args.argptr[16] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyz_) - addmagnetoelasticfield_args.argptr[17] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyz_mul) - addmagnetoelasticfield_args.argptr[18] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B1_) - addmagnetoelasticfield_args.argptr[19] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B1_mul) - addmagnetoelasticfield_args.argptr[20] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B2_) - addmagnetoelasticfield_args.argptr[21] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B2_mul) - addmagnetoelasticfield_args.argptr[22] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Ms_) - addmagnetoelasticfield_args.argptr[23] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Ms_mul) - addmagnetoelasticfield_args.argptr[24] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_N) - } + addmagnetoelasticfield_args.argptr[0] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Bx) + addmagnetoelasticfield_args.argptr[1] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_By) + addmagnetoelasticfield_args.argptr[2] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Bz) + addmagnetoelasticfield_args.argptr[3] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_mx) + addmagnetoelasticfield_args.argptr[4] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_my) + addmagnetoelasticfield_args.argptr[5] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_mz) + addmagnetoelasticfield_args.argptr[6] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exx_) + addmagnetoelasticfield_args.argptr[7] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exx_mul) + addmagnetoelasticfield_args.argptr[8] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyy_) + addmagnetoelasticfield_args.argptr[9] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyy_mul) + addmagnetoelasticfield_args.argptr[10] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_ezz_) + addmagnetoelasticfield_args.argptr[11] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_ezz_mul) + addmagnetoelasticfield_args.argptr[12] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exy_) + addmagnetoelasticfield_args.argptr[13] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exy_mul) + addmagnetoelasticfield_args.argptr[14] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exz_) + addmagnetoelasticfield_args.argptr[15] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_exz_mul) + addmagnetoelasticfield_args.argptr[16] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyz_) + addmagnetoelasticfield_args.argptr[17] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_eyz_mul) + addmagnetoelasticfield_args.argptr[18] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B1_) + addmagnetoelasticfield_args.argptr[19] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B1_mul) + addmagnetoelasticfield_args.argptr[20] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B2_) + addmagnetoelasticfield_args.argptr[21] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_B2_mul) + addmagnetoelasticfield_args.argptr[22] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Ms_) + addmagnetoelasticfield_args.argptr[23] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_Ms_mul) + addmagnetoelasticfield_args.argptr[24] = unsafe.Pointer(&addmagnetoelasticfield_args.arg_N) +} // Wrapper for addmagnetoelasticfield CUDA kernel, asynchronous. -func k_addmagnetoelasticfield_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, exx_ unsafe.Pointer, exx_mul float32, eyy_ unsafe.Pointer, eyy_mul float32, ezz_ unsafe.Pointer, ezz_mul float32, exy_ unsafe.Pointer, exy_mul float32, exz_ unsafe.Pointer, exz_mul float32, eyz_ unsafe.Pointer, eyz_mul float32, B1_ unsafe.Pointer, B1_mul float32, B2_ unsafe.Pointer, B2_mul float32, Ms_ unsafe.Pointer, Ms_mul float32, N int, cfg *config) { - if Synchronous{ // debug +func k_addmagnetoelasticfield_async(Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, exx_ unsafe.Pointer, exx_mul float32, eyy_ unsafe.Pointer, eyy_mul float32, ezz_ unsafe.Pointer, ezz_mul float32, exy_ unsafe.Pointer, exy_mul float32, exz_ unsafe.Pointer, exz_mul float32, eyz_ unsafe.Pointer, eyz_mul float32, B1_ unsafe.Pointer, B1_mul float32, B2_ unsafe.Pointer, B2_mul float32, Ms_ unsafe.Pointer, Ms_mul float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("addmagnetoelasticfield") } @@ -88,62 +88,61 @@ func k_addmagnetoelasticfield_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz u addmagnetoelasticfield_args.Lock() defer addmagnetoelasticfield_args.Unlock() - if addmagnetoelasticfield_code == 0{ + if addmagnetoelasticfield_code == 0 { addmagnetoelasticfield_code = fatbinLoad(addmagnetoelasticfield_map, "addmagnetoelasticfield") } - addmagnetoelasticfield_args.arg_Bx = Bx - addmagnetoelasticfield_args.arg_By = By - addmagnetoelasticfield_args.arg_Bz = Bz - addmagnetoelasticfield_args.arg_mx = mx - addmagnetoelasticfield_args.arg_my = my - addmagnetoelasticfield_args.arg_mz = mz - addmagnetoelasticfield_args.arg_exx_ = exx_ - addmagnetoelasticfield_args.arg_exx_mul = exx_mul - addmagnetoelasticfield_args.arg_eyy_ = eyy_ - addmagnetoelasticfield_args.arg_eyy_mul = eyy_mul - addmagnetoelasticfield_args.arg_ezz_ = ezz_ - addmagnetoelasticfield_args.arg_ezz_mul = ezz_mul - addmagnetoelasticfield_args.arg_exy_ = exy_ - addmagnetoelasticfield_args.arg_exy_mul = exy_mul - addmagnetoelasticfield_args.arg_exz_ = exz_ - addmagnetoelasticfield_args.arg_exz_mul = exz_mul - addmagnetoelasticfield_args.arg_eyz_ = eyz_ - addmagnetoelasticfield_args.arg_eyz_mul = eyz_mul - addmagnetoelasticfield_args.arg_B1_ = B1_ - addmagnetoelasticfield_args.arg_B1_mul = B1_mul - addmagnetoelasticfield_args.arg_B2_ = B2_ - addmagnetoelasticfield_args.arg_B2_mul = B2_mul - addmagnetoelasticfield_args.arg_Ms_ = Ms_ - addmagnetoelasticfield_args.arg_Ms_mul = Ms_mul - addmagnetoelasticfield_args.arg_N = N - + addmagnetoelasticfield_args.arg_Bx = Bx + addmagnetoelasticfield_args.arg_By = By + addmagnetoelasticfield_args.arg_Bz = Bz + addmagnetoelasticfield_args.arg_mx = mx + addmagnetoelasticfield_args.arg_my = my + addmagnetoelasticfield_args.arg_mz = mz + addmagnetoelasticfield_args.arg_exx_ = exx_ + addmagnetoelasticfield_args.arg_exx_mul = exx_mul + addmagnetoelasticfield_args.arg_eyy_ = eyy_ + addmagnetoelasticfield_args.arg_eyy_mul = eyy_mul + addmagnetoelasticfield_args.arg_ezz_ = ezz_ + addmagnetoelasticfield_args.arg_ezz_mul = ezz_mul + addmagnetoelasticfield_args.arg_exy_ = exy_ + addmagnetoelasticfield_args.arg_exy_mul = exy_mul + addmagnetoelasticfield_args.arg_exz_ = exz_ + addmagnetoelasticfield_args.arg_exz_mul = exz_mul + addmagnetoelasticfield_args.arg_eyz_ = eyz_ + addmagnetoelasticfield_args.arg_eyz_mul = eyz_mul + addmagnetoelasticfield_args.arg_B1_ = B1_ + addmagnetoelasticfield_args.arg_B1_mul = B1_mul + addmagnetoelasticfield_args.arg_B2_ = B2_ + addmagnetoelasticfield_args.arg_B2_mul = B2_mul + addmagnetoelasticfield_args.arg_Ms_ = Ms_ + addmagnetoelasticfield_args.arg_Ms_mul = Ms_mul + addmagnetoelasticfield_args.arg_N = N args := addmagnetoelasticfield_args.argptr[:] cu.LaunchKernel(addmagnetoelasticfield_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("addmagnetoelasticfield") } } // maps compute capability on PTX code for addmagnetoelasticfield kernel. -var addmagnetoelasticfield_map = map[int]string{ 0: "" , -30: addmagnetoelasticfield_ptx_30 , -35: addmagnetoelasticfield_ptx_35 , -37: addmagnetoelasticfield_ptx_37 , -50: addmagnetoelasticfield_ptx_50 , -52: addmagnetoelasticfield_ptx_52 , -53: addmagnetoelasticfield_ptx_53 , -60: addmagnetoelasticfield_ptx_60 , -61: addmagnetoelasticfield_ptx_61 , -70: addmagnetoelasticfield_ptx_70 , -75: addmagnetoelasticfield_ptx_75 } +var addmagnetoelasticfield_map = map[int]string{0: "", + 30: addmagnetoelasticfield_ptx_30, + 35: addmagnetoelasticfield_ptx_35, + 37: addmagnetoelasticfield_ptx_37, + 50: addmagnetoelasticfield_ptx_50, + 52: addmagnetoelasticfield_ptx_52, + 53: addmagnetoelasticfield_ptx_53, + 60: addmagnetoelasticfield_ptx_60, + 61: addmagnetoelasticfield_ptx_61, + 70: addmagnetoelasticfield_ptx_70, + 75: addmagnetoelasticfield_ptx_75} // addmagnetoelasticfield PTX code for various compute capabilities. -const( - addmagnetoelasticfield_ptx_30 = ` +const ( + addmagnetoelasticfield_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -366,7 +365,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_35 = ` + addmagnetoelasticfield_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -589,7 +588,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_37 = ` + addmagnetoelasticfield_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -812,7 +811,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_50 = ` + addmagnetoelasticfield_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1035,7 +1034,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_52 = ` + addmagnetoelasticfield_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -1258,7 +1257,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_53 = ` + addmagnetoelasticfield_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -1481,7 +1480,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_60 = ` + addmagnetoelasticfield_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -1704,7 +1703,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_61 = ` + addmagnetoelasticfield_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1927,7 +1926,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_70 = ` + addmagnetoelasticfield_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -2150,7 +2149,7 @@ BB0_22: ` - addmagnetoelasticfield_ptx_75 = ` + addmagnetoelasticfield_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -2373,4 +2372,4 @@ BB0_22: ` - ) +) diff --git a/cuda/magnetoelasticforce_wrapper.go b/cuda/magnetoelasticforce_wrapper.go index f340117fb..fbce48b57 100644 --- a/cuda/magnetoelasticforce_wrapper.go +++ b/cuda/magnetoelasticforce_wrapper.go @@ -5,66 +5,66 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for getmagnetoelasticforce kernel var getmagnetoelasticforce_code cu.Function // Stores the arguments for getmagnetoelasticforce kernel invocation -type getmagnetoelasticforce_args_t struct{ - arg_fx unsafe.Pointer - arg_fy unsafe.Pointer - arg_fz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_B1_ unsafe.Pointer - arg_B1_mul float32 - arg_B2_ unsafe.Pointer - arg_B2_mul float32 - arg_rcsx float32 - arg_rcsy float32 - arg_rcsz float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [17]unsafe.Pointer +type getmagnetoelasticforce_args_t struct { + arg_fx unsafe.Pointer + arg_fy unsafe.Pointer + arg_fz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_B1_ unsafe.Pointer + arg_B1_mul float32 + arg_B2_ unsafe.Pointer + arg_B2_mul float32 + arg_rcsx float32 + arg_rcsy float32 + arg_rcsz float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + argptr [17]unsafe.Pointer sync.Mutex } // Stores the arguments for getmagnetoelasticforce kernel invocation var getmagnetoelasticforce_args getmagnetoelasticforce_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - getmagnetoelasticforce_args.argptr[0] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_fx) - getmagnetoelasticforce_args.argptr[1] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_fy) - getmagnetoelasticforce_args.argptr[2] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_fz) - getmagnetoelasticforce_args.argptr[3] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_mx) - getmagnetoelasticforce_args.argptr[4] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_my) - getmagnetoelasticforce_args.argptr[5] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_mz) - getmagnetoelasticforce_args.argptr[6] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B1_) - getmagnetoelasticforce_args.argptr[7] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B1_mul) - getmagnetoelasticforce_args.argptr[8] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B2_) - getmagnetoelasticforce_args.argptr[9] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B2_mul) - getmagnetoelasticforce_args.argptr[10] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_rcsx) - getmagnetoelasticforce_args.argptr[11] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_rcsy) - getmagnetoelasticforce_args.argptr[12] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_rcsz) - getmagnetoelasticforce_args.argptr[13] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_Nx) - getmagnetoelasticforce_args.argptr[14] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_Ny) - getmagnetoelasticforce_args.argptr[15] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_Nz) - getmagnetoelasticforce_args.argptr[16] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_PBC) - } + getmagnetoelasticforce_args.argptr[0] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_fx) + getmagnetoelasticforce_args.argptr[1] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_fy) + getmagnetoelasticforce_args.argptr[2] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_fz) + getmagnetoelasticforce_args.argptr[3] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_mx) + getmagnetoelasticforce_args.argptr[4] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_my) + getmagnetoelasticforce_args.argptr[5] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_mz) + getmagnetoelasticforce_args.argptr[6] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B1_) + getmagnetoelasticforce_args.argptr[7] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B1_mul) + getmagnetoelasticforce_args.argptr[8] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B2_) + getmagnetoelasticforce_args.argptr[9] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_B2_mul) + getmagnetoelasticforce_args.argptr[10] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_rcsx) + getmagnetoelasticforce_args.argptr[11] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_rcsy) + getmagnetoelasticforce_args.argptr[12] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_rcsz) + getmagnetoelasticforce_args.argptr[13] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_Nx) + getmagnetoelasticforce_args.argptr[14] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_Ny) + getmagnetoelasticforce_args.argptr[15] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_Nz) + getmagnetoelasticforce_args.argptr[16] = unsafe.Pointer(&getmagnetoelasticforce_args.arg_PBC) +} // Wrapper for getmagnetoelasticforce CUDA kernel, asynchronous. -func k_getmagnetoelasticforce_async ( fx unsafe.Pointer, fy unsafe.Pointer, fz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, B1_ unsafe.Pointer, B1_mul float32, B2_ unsafe.Pointer, B2_mul float32, rcsx float32, rcsy float32, rcsz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_getmagnetoelasticforce_async(fx unsafe.Pointer, fy unsafe.Pointer, fz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, B1_ unsafe.Pointer, B1_mul float32, B2_ unsafe.Pointer, B2_mul float32, rcsx float32, rcsy float32, rcsz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("getmagnetoelasticforce") } @@ -72,54 +72,53 @@ func k_getmagnetoelasticforce_async ( fx unsafe.Pointer, fy unsafe.Pointer, fz u getmagnetoelasticforce_args.Lock() defer getmagnetoelasticforce_args.Unlock() - if getmagnetoelasticforce_code == 0{ + if getmagnetoelasticforce_code == 0 { getmagnetoelasticforce_code = fatbinLoad(getmagnetoelasticforce_map, "getmagnetoelasticforce") } - getmagnetoelasticforce_args.arg_fx = fx - getmagnetoelasticforce_args.arg_fy = fy - getmagnetoelasticforce_args.arg_fz = fz - getmagnetoelasticforce_args.arg_mx = mx - getmagnetoelasticforce_args.arg_my = my - getmagnetoelasticforce_args.arg_mz = mz - getmagnetoelasticforce_args.arg_B1_ = B1_ - getmagnetoelasticforce_args.arg_B1_mul = B1_mul - getmagnetoelasticforce_args.arg_B2_ = B2_ - getmagnetoelasticforce_args.arg_B2_mul = B2_mul - getmagnetoelasticforce_args.arg_rcsx = rcsx - getmagnetoelasticforce_args.arg_rcsy = rcsy - getmagnetoelasticforce_args.arg_rcsz = rcsz - getmagnetoelasticforce_args.arg_Nx = Nx - getmagnetoelasticforce_args.arg_Ny = Ny - getmagnetoelasticforce_args.arg_Nz = Nz - getmagnetoelasticforce_args.arg_PBC = PBC - + getmagnetoelasticforce_args.arg_fx = fx + getmagnetoelasticforce_args.arg_fy = fy + getmagnetoelasticforce_args.arg_fz = fz + getmagnetoelasticforce_args.arg_mx = mx + getmagnetoelasticforce_args.arg_my = my + getmagnetoelasticforce_args.arg_mz = mz + getmagnetoelasticforce_args.arg_B1_ = B1_ + getmagnetoelasticforce_args.arg_B1_mul = B1_mul + getmagnetoelasticforce_args.arg_B2_ = B2_ + getmagnetoelasticforce_args.arg_B2_mul = B2_mul + getmagnetoelasticforce_args.arg_rcsx = rcsx + getmagnetoelasticforce_args.arg_rcsy = rcsy + getmagnetoelasticforce_args.arg_rcsz = rcsz + getmagnetoelasticforce_args.arg_Nx = Nx + getmagnetoelasticforce_args.arg_Ny = Ny + getmagnetoelasticforce_args.arg_Nz = Nz + getmagnetoelasticforce_args.arg_PBC = PBC args := getmagnetoelasticforce_args.argptr[:] cu.LaunchKernel(getmagnetoelasticforce_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("getmagnetoelasticforce") } } // maps compute capability on PTX code for getmagnetoelasticforce kernel. -var getmagnetoelasticforce_map = map[int]string{ 0: "" , -30: getmagnetoelasticforce_ptx_30 , -35: getmagnetoelasticforce_ptx_35 , -37: getmagnetoelasticforce_ptx_37 , -50: getmagnetoelasticforce_ptx_50 , -52: getmagnetoelasticforce_ptx_52 , -53: getmagnetoelasticforce_ptx_53 , -60: getmagnetoelasticforce_ptx_60 , -61: getmagnetoelasticforce_ptx_61 , -70: getmagnetoelasticforce_ptx_70 , -75: getmagnetoelasticforce_ptx_75 } +var getmagnetoelasticforce_map = map[int]string{0: "", + 30: getmagnetoelasticforce_ptx_30, + 35: getmagnetoelasticforce_ptx_35, + 37: getmagnetoelasticforce_ptx_37, + 50: getmagnetoelasticforce_ptx_50, + 52: getmagnetoelasticforce_ptx_52, + 53: getmagnetoelasticforce_ptx_53, + 60: getmagnetoelasticforce_ptx_60, + 61: getmagnetoelasticforce_ptx_61, + 70: getmagnetoelasticforce_ptx_70, + 75: getmagnetoelasticforce_ptx_75} // getmagnetoelasticforce PTX code for various compute capabilities. -const( - getmagnetoelasticforce_ptx_30 = ` +const ( + getmagnetoelasticforce_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -1035,7 +1034,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_35 = ` + getmagnetoelasticforce_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -1942,7 +1941,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_37 = ` + getmagnetoelasticforce_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -2849,7 +2848,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_50 = ` + getmagnetoelasticforce_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -3756,7 +3755,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_52 = ` + getmagnetoelasticforce_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -4663,7 +4662,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_53 = ` + getmagnetoelasticforce_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -5570,7 +5569,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_60 = ` + getmagnetoelasticforce_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -6477,7 +6476,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_61 = ` + getmagnetoelasticforce_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -7384,7 +7383,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_70 = ` + getmagnetoelasticforce_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -8291,7 +8290,7 @@ BB0_108: ` - getmagnetoelasticforce_ptx_75 = ` + getmagnetoelasticforce_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -9198,4 +9197,4 @@ BB0_108: ` - ) +) diff --git a/cuda/maxangle_wrapper.go b/cuda/maxangle_wrapper.go index 231de47f0..a0b11a337 100644 --- a/cuda/maxangle_wrapper.go +++ b/cuda/maxangle_wrapper.go @@ -5,52 +5,52 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for setmaxangle kernel var setmaxangle_code cu.Function // Stores the arguments for setmaxangle kernel invocation -type setmaxangle_args_t struct{ - arg_dst unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_aLUT2d unsafe.Pointer - arg_regions unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [10]unsafe.Pointer +type setmaxangle_args_t struct { + arg_dst unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_aLUT2d unsafe.Pointer + arg_regions unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + argptr [10]unsafe.Pointer sync.Mutex } // Stores the arguments for setmaxangle kernel invocation var setmaxangle_args setmaxangle_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - setmaxangle_args.argptr[0] = unsafe.Pointer(&setmaxangle_args.arg_dst) - setmaxangle_args.argptr[1] = unsafe.Pointer(&setmaxangle_args.arg_mx) - setmaxangle_args.argptr[2] = unsafe.Pointer(&setmaxangle_args.arg_my) - setmaxangle_args.argptr[3] = unsafe.Pointer(&setmaxangle_args.arg_mz) - setmaxangle_args.argptr[4] = unsafe.Pointer(&setmaxangle_args.arg_aLUT2d) - setmaxangle_args.argptr[5] = unsafe.Pointer(&setmaxangle_args.arg_regions) - setmaxangle_args.argptr[6] = unsafe.Pointer(&setmaxangle_args.arg_Nx) - setmaxangle_args.argptr[7] = unsafe.Pointer(&setmaxangle_args.arg_Ny) - setmaxangle_args.argptr[8] = unsafe.Pointer(&setmaxangle_args.arg_Nz) - setmaxangle_args.argptr[9] = unsafe.Pointer(&setmaxangle_args.arg_PBC) - } + setmaxangle_args.argptr[0] = unsafe.Pointer(&setmaxangle_args.arg_dst) + setmaxangle_args.argptr[1] = unsafe.Pointer(&setmaxangle_args.arg_mx) + setmaxangle_args.argptr[2] = unsafe.Pointer(&setmaxangle_args.arg_my) + setmaxangle_args.argptr[3] = unsafe.Pointer(&setmaxangle_args.arg_mz) + setmaxangle_args.argptr[4] = unsafe.Pointer(&setmaxangle_args.arg_aLUT2d) + setmaxangle_args.argptr[5] = unsafe.Pointer(&setmaxangle_args.arg_regions) + setmaxangle_args.argptr[6] = unsafe.Pointer(&setmaxangle_args.arg_Nx) + setmaxangle_args.argptr[7] = unsafe.Pointer(&setmaxangle_args.arg_Ny) + setmaxangle_args.argptr[8] = unsafe.Pointer(&setmaxangle_args.arg_Nz) + setmaxangle_args.argptr[9] = unsafe.Pointer(&setmaxangle_args.arg_PBC) +} // Wrapper for setmaxangle CUDA kernel, asynchronous. -func k_setmaxangle_async ( dst unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, aLUT2d unsafe.Pointer, regions unsafe.Pointer, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_setmaxangle_async(dst unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, aLUT2d unsafe.Pointer, regions unsafe.Pointer, Nx int, Ny int, Nz int, PBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("setmaxangle") } @@ -58,47 +58,46 @@ func k_setmaxangle_async ( dst unsafe.Pointer, mx unsafe.Pointer, my unsafe.Poin setmaxangle_args.Lock() defer setmaxangle_args.Unlock() - if setmaxangle_code == 0{ + if setmaxangle_code == 0 { setmaxangle_code = fatbinLoad(setmaxangle_map, "setmaxangle") } - setmaxangle_args.arg_dst = dst - setmaxangle_args.arg_mx = mx - setmaxangle_args.arg_my = my - setmaxangle_args.arg_mz = mz - setmaxangle_args.arg_aLUT2d = aLUT2d - setmaxangle_args.arg_regions = regions - setmaxangle_args.arg_Nx = Nx - setmaxangle_args.arg_Ny = Ny - setmaxangle_args.arg_Nz = Nz - setmaxangle_args.arg_PBC = PBC - + setmaxangle_args.arg_dst = dst + setmaxangle_args.arg_mx = mx + setmaxangle_args.arg_my = my + setmaxangle_args.arg_mz = mz + setmaxangle_args.arg_aLUT2d = aLUT2d + setmaxangle_args.arg_regions = regions + setmaxangle_args.arg_Nx = Nx + setmaxangle_args.arg_Ny = Ny + setmaxangle_args.arg_Nz = Nz + setmaxangle_args.arg_PBC = PBC args := setmaxangle_args.argptr[:] cu.LaunchKernel(setmaxangle_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("setmaxangle") } } // maps compute capability on PTX code for setmaxangle kernel. -var setmaxangle_map = map[int]string{ 0: "" , -30: setmaxangle_ptx_30 , -35: setmaxangle_ptx_35 , -37: setmaxangle_ptx_37 , -50: setmaxangle_ptx_50 , -52: setmaxangle_ptx_52 , -53: setmaxangle_ptx_53 , -60: setmaxangle_ptx_60 , -61: setmaxangle_ptx_61 , -70: setmaxangle_ptx_70 , -75: setmaxangle_ptx_75 } +var setmaxangle_map = map[int]string{0: "", + 30: setmaxangle_ptx_30, + 35: setmaxangle_ptx_35, + 37: setmaxangle_ptx_37, + 50: setmaxangle_ptx_50, + 52: setmaxangle_ptx_52, + 53: setmaxangle_ptx_53, + 60: setmaxangle_ptx_60, + 61: setmaxangle_ptx_61, + 70: setmaxangle_ptx_70, + 75: setmaxangle_ptx_75} // setmaxangle PTX code for various compute capabilities. -const( - setmaxangle_ptx_30 = ` +const ( + setmaxangle_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -678,7 +677,7 @@ BB0_34: ` - setmaxangle_ptx_35 = ` + setmaxangle_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -1260,7 +1259,7 @@ BB0_34: ` - setmaxangle_ptx_37 = ` + setmaxangle_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1842,7 +1841,7 @@ BB0_34: ` - setmaxangle_ptx_50 = ` + setmaxangle_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -2424,7 +2423,7 @@ BB0_34: ` - setmaxangle_ptx_52 = ` + setmaxangle_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -3006,7 +3005,7 @@ BB0_34: ` - setmaxangle_ptx_53 = ` + setmaxangle_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -3588,7 +3587,7 @@ BB0_34: ` - setmaxangle_ptx_60 = ` + setmaxangle_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -4170,7 +4169,7 @@ BB0_34: ` - setmaxangle_ptx_61 = ` + setmaxangle_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -4752,7 +4751,7 @@ BB0_34: ` - setmaxangle_ptx_70 = ` + setmaxangle_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -5334,7 +5333,7 @@ BB0_34: ` - setmaxangle_ptx_75 = ` + setmaxangle_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -5916,4 +5915,4 @@ BB0_34: ` - ) +) diff --git a/cuda/minimize_wrapper.go b/cuda/minimize_wrapper.go index 1193e5354..a861f37bf 100644 --- a/cuda/minimize_wrapper.go +++ b/cuda/minimize_wrapper.go @@ -5,54 +5,54 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for minimize kernel var minimize_code cu.Function // Stores the arguments for minimize kernel invocation -type minimize_args_t struct{ - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_m0x unsafe.Pointer - arg_m0y unsafe.Pointer - arg_m0z unsafe.Pointer - arg_tx unsafe.Pointer - arg_ty unsafe.Pointer - arg_tz unsafe.Pointer - arg_dt float32 - arg_N int - argptr [11]unsafe.Pointer +type minimize_args_t struct { + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_m0x unsafe.Pointer + arg_m0y unsafe.Pointer + arg_m0z unsafe.Pointer + arg_tx unsafe.Pointer + arg_ty unsafe.Pointer + arg_tz unsafe.Pointer + arg_dt float32 + arg_N int + argptr [11]unsafe.Pointer sync.Mutex } // Stores the arguments for minimize kernel invocation var minimize_args minimize_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - minimize_args.argptr[0] = unsafe.Pointer(&minimize_args.arg_mx) - minimize_args.argptr[1] = unsafe.Pointer(&minimize_args.arg_my) - minimize_args.argptr[2] = unsafe.Pointer(&minimize_args.arg_mz) - minimize_args.argptr[3] = unsafe.Pointer(&minimize_args.arg_m0x) - minimize_args.argptr[4] = unsafe.Pointer(&minimize_args.arg_m0y) - minimize_args.argptr[5] = unsafe.Pointer(&minimize_args.arg_m0z) - minimize_args.argptr[6] = unsafe.Pointer(&minimize_args.arg_tx) - minimize_args.argptr[7] = unsafe.Pointer(&minimize_args.arg_ty) - minimize_args.argptr[8] = unsafe.Pointer(&minimize_args.arg_tz) - minimize_args.argptr[9] = unsafe.Pointer(&minimize_args.arg_dt) - minimize_args.argptr[10] = unsafe.Pointer(&minimize_args.arg_N) - } + minimize_args.argptr[0] = unsafe.Pointer(&minimize_args.arg_mx) + minimize_args.argptr[1] = unsafe.Pointer(&minimize_args.arg_my) + minimize_args.argptr[2] = unsafe.Pointer(&minimize_args.arg_mz) + minimize_args.argptr[3] = unsafe.Pointer(&minimize_args.arg_m0x) + minimize_args.argptr[4] = unsafe.Pointer(&minimize_args.arg_m0y) + minimize_args.argptr[5] = unsafe.Pointer(&minimize_args.arg_m0z) + minimize_args.argptr[6] = unsafe.Pointer(&minimize_args.arg_tx) + minimize_args.argptr[7] = unsafe.Pointer(&minimize_args.arg_ty) + minimize_args.argptr[8] = unsafe.Pointer(&minimize_args.arg_tz) + minimize_args.argptr[9] = unsafe.Pointer(&minimize_args.arg_dt) + minimize_args.argptr[10] = unsafe.Pointer(&minimize_args.arg_N) +} // Wrapper for minimize CUDA kernel, asynchronous. -func k_minimize_async ( mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, m0x unsafe.Pointer, m0y unsafe.Pointer, m0z unsafe.Pointer, tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, dt float32, N int, cfg *config) { - if Synchronous{ // debug +func k_minimize_async(mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, m0x unsafe.Pointer, m0y unsafe.Pointer, m0z unsafe.Pointer, tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, dt float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("minimize") } @@ -60,48 +60,47 @@ func k_minimize_async ( mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, minimize_args.Lock() defer minimize_args.Unlock() - if minimize_code == 0{ + if minimize_code == 0 { minimize_code = fatbinLoad(minimize_map, "minimize") } - minimize_args.arg_mx = mx - minimize_args.arg_my = my - minimize_args.arg_mz = mz - minimize_args.arg_m0x = m0x - minimize_args.arg_m0y = m0y - minimize_args.arg_m0z = m0z - minimize_args.arg_tx = tx - minimize_args.arg_ty = ty - minimize_args.arg_tz = tz - minimize_args.arg_dt = dt - minimize_args.arg_N = N - + minimize_args.arg_mx = mx + minimize_args.arg_my = my + minimize_args.arg_mz = mz + minimize_args.arg_m0x = m0x + minimize_args.arg_m0y = m0y + minimize_args.arg_m0z = m0z + minimize_args.arg_tx = tx + minimize_args.arg_ty = ty + minimize_args.arg_tz = tz + minimize_args.arg_dt = dt + minimize_args.arg_N = N args := minimize_args.argptr[:] cu.LaunchKernel(minimize_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("minimize") } } // maps compute capability on PTX code for minimize kernel. -var minimize_map = map[int]string{ 0: "" , -30: minimize_ptx_30 , -35: minimize_ptx_35 , -37: minimize_ptx_37 , -50: minimize_ptx_50 , -52: minimize_ptx_52 , -53: minimize_ptx_53 , -60: minimize_ptx_60 , -61: minimize_ptx_61 , -70: minimize_ptx_70 , -75: minimize_ptx_75 } +var minimize_map = map[int]string{0: "", + 30: minimize_ptx_30, + 35: minimize_ptx_35, + 37: minimize_ptx_37, + 50: minimize_ptx_50, + 52: minimize_ptx_52, + 53: minimize_ptx_53, + 60: minimize_ptx_60, + 61: minimize_ptx_61, + 70: minimize_ptx_70, + 75: minimize_ptx_75} // minimize PTX code for various compute capabilities. -const( - minimize_ptx_30 = ` +const ( + minimize_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -202,7 +201,7 @@ BB0_2: ` - minimize_ptx_35 = ` + minimize_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -303,7 +302,7 @@ BB0_2: ` - minimize_ptx_37 = ` + minimize_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -404,7 +403,7 @@ BB0_2: ` - minimize_ptx_50 = ` + minimize_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -505,7 +504,7 @@ BB0_2: ` - minimize_ptx_52 = ` + minimize_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -606,7 +605,7 @@ BB0_2: ` - minimize_ptx_53 = ` + minimize_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -707,7 +706,7 @@ BB0_2: ` - minimize_ptx_60 = ` + minimize_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -808,7 +807,7 @@ BB0_2: ` - minimize_ptx_61 = ` + minimize_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -909,7 +908,7 @@ BB0_2: ` - minimize_ptx_70 = ` + minimize_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1010,7 +1009,7 @@ BB0_2: ` - minimize_ptx_75 = ` + minimize_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1111,4 +1110,4 @@ BB0_2: ` - ) +) diff --git a/cuda/mul_wrapper.go b/cuda/mul_wrapper.go index d1190b984..8ac43ad65 100644 --- a/cuda/mul_wrapper.go +++ b/cuda/mul_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for mul kernel var mul_code cu.Function // Stores the arguments for mul kernel invocation -type mul_args_t struct{ - arg_dst unsafe.Pointer - arg_a unsafe.Pointer - arg_b unsafe.Pointer - arg_N int - argptr [4]unsafe.Pointer +type mul_args_t struct { + arg_dst unsafe.Pointer + arg_a unsafe.Pointer + arg_b unsafe.Pointer + arg_N int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for mul kernel invocation var mul_args mul_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - mul_args.argptr[0] = unsafe.Pointer(&mul_args.arg_dst) - mul_args.argptr[1] = unsafe.Pointer(&mul_args.arg_a) - mul_args.argptr[2] = unsafe.Pointer(&mul_args.arg_b) - mul_args.argptr[3] = unsafe.Pointer(&mul_args.arg_N) - } + mul_args.argptr[0] = unsafe.Pointer(&mul_args.arg_dst) + mul_args.argptr[1] = unsafe.Pointer(&mul_args.arg_a) + mul_args.argptr[2] = unsafe.Pointer(&mul_args.arg_b) + mul_args.argptr[3] = unsafe.Pointer(&mul_args.arg_N) +} // Wrapper for mul CUDA kernel, asynchronous. -func k_mul_async ( dst unsafe.Pointer, a unsafe.Pointer, b unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_mul_async(dst unsafe.Pointer, a unsafe.Pointer, b unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("mul") } @@ -46,41 +46,40 @@ func k_mul_async ( dst unsafe.Pointer, a unsafe.Pointer, b unsafe.Pointer, N int mul_args.Lock() defer mul_args.Unlock() - if mul_code == 0{ + if mul_code == 0 { mul_code = fatbinLoad(mul_map, "mul") } - mul_args.arg_dst = dst - mul_args.arg_a = a - mul_args.arg_b = b - mul_args.arg_N = N - + mul_args.arg_dst = dst + mul_args.arg_a = a + mul_args.arg_b = b + mul_args.arg_N = N args := mul_args.argptr[:] cu.LaunchKernel(mul_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("mul") } } // maps compute capability on PTX code for mul kernel. -var mul_map = map[int]string{ 0: "" , -30: mul_ptx_30 , -35: mul_ptx_35 , -37: mul_ptx_37 , -50: mul_ptx_50 , -52: mul_ptx_52 , -53: mul_ptx_53 , -60: mul_ptx_60 , -61: mul_ptx_61 , -70: mul_ptx_70 , -75: mul_ptx_75 } +var mul_map = map[int]string{0: "", + 30: mul_ptx_30, + 35: mul_ptx_35, + 37: mul_ptx_37, + 50: mul_ptx_50, + 52: mul_ptx_52, + 53: mul_ptx_53, + 60: mul_ptx_60, + 61: mul_ptx_61, + 70: mul_ptx_70, + 75: mul_ptx_75} // mul PTX code for various compute capabilities. -const( - mul_ptx_30 = ` +const ( + mul_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -132,7 +131,7 @@ BB0_2: ` - mul_ptx_35 = ` + mul_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -184,7 +183,7 @@ BB0_2: ` - mul_ptx_37 = ` + mul_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -236,7 +235,7 @@ BB0_2: ` - mul_ptx_50 = ` + mul_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -288,7 +287,7 @@ BB0_2: ` - mul_ptx_52 = ` + mul_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -340,7 +339,7 @@ BB0_2: ` - mul_ptx_53 = ` + mul_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -392,7 +391,7 @@ BB0_2: ` - mul_ptx_60 = ` + mul_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -444,7 +443,7 @@ BB0_2: ` - mul_ptx_61 = ` + mul_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -496,7 +495,7 @@ BB0_2: ` - mul_ptx_70 = ` + mul_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -548,7 +547,7 @@ BB0_2: ` - mul_ptx_75 = ` + mul_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -600,4 +599,4 @@ BB0_2: ` - ) +) diff --git a/cuda/normalize_wrapper.go b/cuda/normalize_wrapper.go index ab1e7d69f..4c4dcedb0 100644 --- a/cuda/normalize_wrapper.go +++ b/cuda/normalize_wrapper.go @@ -5,42 +5,42 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for normalize kernel var normalize_code cu.Function // Stores the arguments for normalize kernel invocation -type normalize_args_t struct{ - arg_vx unsafe.Pointer - arg_vy unsafe.Pointer - arg_vz unsafe.Pointer - arg_vol unsafe.Pointer - arg_N int - argptr [5]unsafe.Pointer +type normalize_args_t struct { + arg_vx unsafe.Pointer + arg_vy unsafe.Pointer + arg_vz unsafe.Pointer + arg_vol unsafe.Pointer + arg_N int + argptr [5]unsafe.Pointer sync.Mutex } // Stores the arguments for normalize kernel invocation var normalize_args normalize_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - normalize_args.argptr[0] = unsafe.Pointer(&normalize_args.arg_vx) - normalize_args.argptr[1] = unsafe.Pointer(&normalize_args.arg_vy) - normalize_args.argptr[2] = unsafe.Pointer(&normalize_args.arg_vz) - normalize_args.argptr[3] = unsafe.Pointer(&normalize_args.arg_vol) - normalize_args.argptr[4] = unsafe.Pointer(&normalize_args.arg_N) - } + normalize_args.argptr[0] = unsafe.Pointer(&normalize_args.arg_vx) + normalize_args.argptr[1] = unsafe.Pointer(&normalize_args.arg_vy) + normalize_args.argptr[2] = unsafe.Pointer(&normalize_args.arg_vz) + normalize_args.argptr[3] = unsafe.Pointer(&normalize_args.arg_vol) + normalize_args.argptr[4] = unsafe.Pointer(&normalize_args.arg_N) +} // Wrapper for normalize CUDA kernel, asynchronous. -func k_normalize_async ( vx unsafe.Pointer, vy unsafe.Pointer, vz unsafe.Pointer, vol unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_normalize_async(vx unsafe.Pointer, vy unsafe.Pointer, vz unsafe.Pointer, vol unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("normalize") } @@ -48,42 +48,41 @@ func k_normalize_async ( vx unsafe.Pointer, vy unsafe.Pointer, vz unsafe.Pointer normalize_args.Lock() defer normalize_args.Unlock() - if normalize_code == 0{ + if normalize_code == 0 { normalize_code = fatbinLoad(normalize_map, "normalize") } - normalize_args.arg_vx = vx - normalize_args.arg_vy = vy - normalize_args.arg_vz = vz - normalize_args.arg_vol = vol - normalize_args.arg_N = N - + normalize_args.arg_vx = vx + normalize_args.arg_vy = vy + normalize_args.arg_vz = vz + normalize_args.arg_vol = vol + normalize_args.arg_N = N args := normalize_args.argptr[:] cu.LaunchKernel(normalize_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("normalize") } } // maps compute capability on PTX code for normalize kernel. -var normalize_map = map[int]string{ 0: "" , -30: normalize_ptx_30 , -35: normalize_ptx_35 , -37: normalize_ptx_37 , -50: normalize_ptx_50 , -52: normalize_ptx_52 , -53: normalize_ptx_53 , -60: normalize_ptx_60 , -61: normalize_ptx_61 , -70: normalize_ptx_70 , -75: normalize_ptx_75 } +var normalize_map = map[int]string{0: "", + 30: normalize_ptx_30, + 35: normalize_ptx_35, + 37: normalize_ptx_37, + 50: normalize_ptx_50, + 52: normalize_ptx_52, + 53: normalize_ptx_53, + 60: normalize_ptx_60, + 61: normalize_ptx_61, + 70: normalize_ptx_70, + 75: normalize_ptx_75} // normalize PTX code for various compute capabilities. -const( - normalize_ptx_30 = ` +const ( + normalize_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -166,7 +165,7 @@ BB0_6: ` - normalize_ptx_35 = ` + normalize_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -249,7 +248,7 @@ BB0_6: ` - normalize_ptx_37 = ` + normalize_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -332,7 +331,7 @@ BB0_6: ` - normalize_ptx_50 = ` + normalize_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -415,7 +414,7 @@ BB0_6: ` - normalize_ptx_52 = ` + normalize_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -498,7 +497,7 @@ BB0_6: ` - normalize_ptx_53 = ` + normalize_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -581,7 +580,7 @@ BB0_6: ` - normalize_ptx_60 = ` + normalize_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -664,7 +663,7 @@ BB0_6: ` - normalize_ptx_61 = ` + normalize_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -747,7 +746,7 @@ BB0_6: ` - normalize_ptx_70 = ` + normalize_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -830,7 +829,7 @@ BB0_6: ` - normalize_ptx_75 = ` + normalize_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -913,4 +912,4 @@ BB0_6: ` - ) +) diff --git a/cuda/reducedot_wrapper.go b/cuda/reducedot_wrapper.go index 6ab243361..f7ca89bc8 100644 --- a/cuda/reducedot_wrapper.go +++ b/cuda/reducedot_wrapper.go @@ -5,42 +5,42 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for reducedot kernel var reducedot_code cu.Function // Stores the arguments for reducedot kernel invocation -type reducedot_args_t struct{ - arg_x1 unsafe.Pointer - arg_x2 unsafe.Pointer - arg_dst unsafe.Pointer - arg_initVal float32 - arg_n int - argptr [5]unsafe.Pointer +type reducedot_args_t struct { + arg_x1 unsafe.Pointer + arg_x2 unsafe.Pointer + arg_dst unsafe.Pointer + arg_initVal float32 + arg_n int + argptr [5]unsafe.Pointer sync.Mutex } // Stores the arguments for reducedot kernel invocation var reducedot_args reducedot_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - reducedot_args.argptr[0] = unsafe.Pointer(&reducedot_args.arg_x1) - reducedot_args.argptr[1] = unsafe.Pointer(&reducedot_args.arg_x2) - reducedot_args.argptr[2] = unsafe.Pointer(&reducedot_args.arg_dst) - reducedot_args.argptr[3] = unsafe.Pointer(&reducedot_args.arg_initVal) - reducedot_args.argptr[4] = unsafe.Pointer(&reducedot_args.arg_n) - } + reducedot_args.argptr[0] = unsafe.Pointer(&reducedot_args.arg_x1) + reducedot_args.argptr[1] = unsafe.Pointer(&reducedot_args.arg_x2) + reducedot_args.argptr[2] = unsafe.Pointer(&reducedot_args.arg_dst) + reducedot_args.argptr[3] = unsafe.Pointer(&reducedot_args.arg_initVal) + reducedot_args.argptr[4] = unsafe.Pointer(&reducedot_args.arg_n) +} // Wrapper for reducedot CUDA kernel, asynchronous. -func k_reducedot_async ( x1 unsafe.Pointer, x2 unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { - if Synchronous{ // debug +func k_reducedot_async(x1 unsafe.Pointer, x2 unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("reducedot") } @@ -48,42 +48,41 @@ func k_reducedot_async ( x1 unsafe.Pointer, x2 unsafe.Pointer, dst unsafe.Pointe reducedot_args.Lock() defer reducedot_args.Unlock() - if reducedot_code == 0{ + if reducedot_code == 0 { reducedot_code = fatbinLoad(reducedot_map, "reducedot") } - reducedot_args.arg_x1 = x1 - reducedot_args.arg_x2 = x2 - reducedot_args.arg_dst = dst - reducedot_args.arg_initVal = initVal - reducedot_args.arg_n = n - + reducedot_args.arg_x1 = x1 + reducedot_args.arg_x2 = x2 + reducedot_args.arg_dst = dst + reducedot_args.arg_initVal = initVal + reducedot_args.arg_n = n args := reducedot_args.argptr[:] cu.LaunchKernel(reducedot_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("reducedot") } } // maps compute capability on PTX code for reducedot kernel. -var reducedot_map = map[int]string{ 0: "" , -30: reducedot_ptx_30 , -35: reducedot_ptx_35 , -37: reducedot_ptx_37 , -50: reducedot_ptx_50 , -52: reducedot_ptx_52 , -53: reducedot_ptx_53 , -60: reducedot_ptx_60 , -61: reducedot_ptx_61 , -70: reducedot_ptx_70 , -75: reducedot_ptx_75 } +var reducedot_map = map[int]string{0: "", + 30: reducedot_ptx_30, + 35: reducedot_ptx_35, + 37: reducedot_ptx_37, + 50: reducedot_ptx_50, + 52: reducedot_ptx_52, + 53: reducedot_ptx_53, + 60: reducedot_ptx_60, + 61: reducedot_ptx_61, + 70: reducedot_ptx_70, + 75: reducedot_ptx_75} // reducedot PTX code for various compute capabilities. -const( - reducedot_ptx_30 = ` +const ( + reducedot_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -203,7 +202,7 @@ BB0_10: ` - reducedot_ptx_35 = ` + reducedot_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -323,7 +322,7 @@ BB0_10: ` - reducedot_ptx_37 = ` + reducedot_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -443,7 +442,7 @@ BB0_10: ` - reducedot_ptx_50 = ` + reducedot_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -563,7 +562,7 @@ BB0_10: ` - reducedot_ptx_52 = ` + reducedot_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -683,7 +682,7 @@ BB0_10: ` - reducedot_ptx_53 = ` + reducedot_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -803,7 +802,7 @@ BB0_10: ` - reducedot_ptx_60 = ` + reducedot_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -923,7 +922,7 @@ BB0_10: ` - reducedot_ptx_61 = ` + reducedot_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1043,7 +1042,7 @@ BB0_10: ` - reducedot_ptx_70 = ` + reducedot_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1163,7 +1162,7 @@ BB0_10: ` - reducedot_ptx_75 = ` + reducedot_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1283,4 +1282,4 @@ BB0_10: ` - ) +) diff --git a/cuda/reducemaxabs_wrapper.go b/cuda/reducemaxabs_wrapper.go index 14000e74e..7fca796d7 100644 --- a/cuda/reducemaxabs_wrapper.go +++ b/cuda/reducemaxabs_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for reducemaxabs kernel var reducemaxabs_code cu.Function // Stores the arguments for reducemaxabs kernel invocation -type reducemaxabs_args_t struct{ - arg_src unsafe.Pointer - arg_dst unsafe.Pointer - arg_initVal float32 - arg_n int - argptr [4]unsafe.Pointer +type reducemaxabs_args_t struct { + arg_src unsafe.Pointer + arg_dst unsafe.Pointer + arg_initVal float32 + arg_n int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for reducemaxabs kernel invocation var reducemaxabs_args reducemaxabs_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - reducemaxabs_args.argptr[0] = unsafe.Pointer(&reducemaxabs_args.arg_src) - reducemaxabs_args.argptr[1] = unsafe.Pointer(&reducemaxabs_args.arg_dst) - reducemaxabs_args.argptr[2] = unsafe.Pointer(&reducemaxabs_args.arg_initVal) - reducemaxabs_args.argptr[3] = unsafe.Pointer(&reducemaxabs_args.arg_n) - } + reducemaxabs_args.argptr[0] = unsafe.Pointer(&reducemaxabs_args.arg_src) + reducemaxabs_args.argptr[1] = unsafe.Pointer(&reducemaxabs_args.arg_dst) + reducemaxabs_args.argptr[2] = unsafe.Pointer(&reducemaxabs_args.arg_initVal) + reducemaxabs_args.argptr[3] = unsafe.Pointer(&reducemaxabs_args.arg_n) +} // Wrapper for reducemaxabs CUDA kernel, asynchronous. -func k_reducemaxabs_async ( src unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { - if Synchronous{ // debug +func k_reducemaxabs_async(src unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("reducemaxabs") } @@ -46,41 +46,40 @@ func k_reducemaxabs_async ( src unsafe.Pointer, dst unsafe.Pointer, initVal floa reducemaxabs_args.Lock() defer reducemaxabs_args.Unlock() - if reducemaxabs_code == 0{ + if reducemaxabs_code == 0 { reducemaxabs_code = fatbinLoad(reducemaxabs_map, "reducemaxabs") } - reducemaxabs_args.arg_src = src - reducemaxabs_args.arg_dst = dst - reducemaxabs_args.arg_initVal = initVal - reducemaxabs_args.arg_n = n - + reducemaxabs_args.arg_src = src + reducemaxabs_args.arg_dst = dst + reducemaxabs_args.arg_initVal = initVal + reducemaxabs_args.arg_n = n args := reducemaxabs_args.argptr[:] cu.LaunchKernel(reducemaxabs_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("reducemaxabs") } } // maps compute capability on PTX code for reducemaxabs kernel. -var reducemaxabs_map = map[int]string{ 0: "" , -30: reducemaxabs_ptx_30 , -35: reducemaxabs_ptx_35 , -37: reducemaxabs_ptx_37 , -50: reducemaxabs_ptx_50 , -52: reducemaxabs_ptx_52 , -53: reducemaxabs_ptx_53 , -60: reducemaxabs_ptx_60 , -61: reducemaxabs_ptx_61 , -70: reducemaxabs_ptx_70 , -75: reducemaxabs_ptx_75 } +var reducemaxabs_map = map[int]string{0: "", + 30: reducemaxabs_ptx_30, + 35: reducemaxabs_ptx_35, + 37: reducemaxabs_ptx_37, + 50: reducemaxabs_ptx_50, + 52: reducemaxabs_ptx_52, + 53: reducemaxabs_ptx_53, + 60: reducemaxabs_ptx_60, + 61: reducemaxabs_ptx_61, + 70: reducemaxabs_ptx_70, + 75: reducemaxabs_ptx_75} // reducemaxabs PTX code for various compute capabilities. -const( - reducemaxabs_ptx_30 = ` +const ( + reducemaxabs_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -198,7 +197,7 @@ BB0_10: ` - reducemaxabs_ptx_35 = ` + reducemaxabs_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -316,7 +315,7 @@ BB0_10: ` - reducemaxabs_ptx_37 = ` + reducemaxabs_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -434,7 +433,7 @@ BB0_10: ` - reducemaxabs_ptx_50 = ` + reducemaxabs_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -552,7 +551,7 @@ BB0_10: ` - reducemaxabs_ptx_52 = ` + reducemaxabs_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -670,7 +669,7 @@ BB0_10: ` - reducemaxabs_ptx_53 = ` + reducemaxabs_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -788,7 +787,7 @@ BB0_10: ` - reducemaxabs_ptx_60 = ` + reducemaxabs_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -906,7 +905,7 @@ BB0_10: ` - reducemaxabs_ptx_61 = ` + reducemaxabs_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1024,7 +1023,7 @@ BB0_10: ` - reducemaxabs_ptx_70 = ` + reducemaxabs_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1142,7 +1141,7 @@ BB0_10: ` - reducemaxabs_ptx_75 = ` + reducemaxabs_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1260,4 +1259,4 @@ BB0_10: ` - ) +) diff --git a/cuda/reducemaxdiff_wrapper.go b/cuda/reducemaxdiff_wrapper.go index ba2d7f2ab..7a7aa8bdc 100644 --- a/cuda/reducemaxdiff_wrapper.go +++ b/cuda/reducemaxdiff_wrapper.go @@ -5,42 +5,42 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for reducemaxdiff kernel var reducemaxdiff_code cu.Function // Stores the arguments for reducemaxdiff kernel invocation -type reducemaxdiff_args_t struct{ - arg_src1 unsafe.Pointer - arg_src2 unsafe.Pointer - arg_dst unsafe.Pointer - arg_initVal float32 - arg_n int - argptr [5]unsafe.Pointer +type reducemaxdiff_args_t struct { + arg_src1 unsafe.Pointer + arg_src2 unsafe.Pointer + arg_dst unsafe.Pointer + arg_initVal float32 + arg_n int + argptr [5]unsafe.Pointer sync.Mutex } // Stores the arguments for reducemaxdiff kernel invocation var reducemaxdiff_args reducemaxdiff_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - reducemaxdiff_args.argptr[0] = unsafe.Pointer(&reducemaxdiff_args.arg_src1) - reducemaxdiff_args.argptr[1] = unsafe.Pointer(&reducemaxdiff_args.arg_src2) - reducemaxdiff_args.argptr[2] = unsafe.Pointer(&reducemaxdiff_args.arg_dst) - reducemaxdiff_args.argptr[3] = unsafe.Pointer(&reducemaxdiff_args.arg_initVal) - reducemaxdiff_args.argptr[4] = unsafe.Pointer(&reducemaxdiff_args.arg_n) - } + reducemaxdiff_args.argptr[0] = unsafe.Pointer(&reducemaxdiff_args.arg_src1) + reducemaxdiff_args.argptr[1] = unsafe.Pointer(&reducemaxdiff_args.arg_src2) + reducemaxdiff_args.argptr[2] = unsafe.Pointer(&reducemaxdiff_args.arg_dst) + reducemaxdiff_args.argptr[3] = unsafe.Pointer(&reducemaxdiff_args.arg_initVal) + reducemaxdiff_args.argptr[4] = unsafe.Pointer(&reducemaxdiff_args.arg_n) +} // Wrapper for reducemaxdiff CUDA kernel, asynchronous. -func k_reducemaxdiff_async ( src1 unsafe.Pointer, src2 unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { - if Synchronous{ // debug +func k_reducemaxdiff_async(src1 unsafe.Pointer, src2 unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("reducemaxdiff") } @@ -48,42 +48,41 @@ func k_reducemaxdiff_async ( src1 unsafe.Pointer, src2 unsafe.Pointer, dst unsaf reducemaxdiff_args.Lock() defer reducemaxdiff_args.Unlock() - if reducemaxdiff_code == 0{ + if reducemaxdiff_code == 0 { reducemaxdiff_code = fatbinLoad(reducemaxdiff_map, "reducemaxdiff") } - reducemaxdiff_args.arg_src1 = src1 - reducemaxdiff_args.arg_src2 = src2 - reducemaxdiff_args.arg_dst = dst - reducemaxdiff_args.arg_initVal = initVal - reducemaxdiff_args.arg_n = n - + reducemaxdiff_args.arg_src1 = src1 + reducemaxdiff_args.arg_src2 = src2 + reducemaxdiff_args.arg_dst = dst + reducemaxdiff_args.arg_initVal = initVal + reducemaxdiff_args.arg_n = n args := reducemaxdiff_args.argptr[:] cu.LaunchKernel(reducemaxdiff_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("reducemaxdiff") } } // maps compute capability on PTX code for reducemaxdiff kernel. -var reducemaxdiff_map = map[int]string{ 0: "" , -30: reducemaxdiff_ptx_30 , -35: reducemaxdiff_ptx_35 , -37: reducemaxdiff_ptx_37 , -50: reducemaxdiff_ptx_50 , -52: reducemaxdiff_ptx_52 , -53: reducemaxdiff_ptx_53 , -60: reducemaxdiff_ptx_60 , -61: reducemaxdiff_ptx_61 , -70: reducemaxdiff_ptx_70 , -75: reducemaxdiff_ptx_75 } +var reducemaxdiff_map = map[int]string{0: "", + 30: reducemaxdiff_ptx_30, + 35: reducemaxdiff_ptx_35, + 37: reducemaxdiff_ptx_37, + 50: reducemaxdiff_ptx_50, + 52: reducemaxdiff_ptx_52, + 53: reducemaxdiff_ptx_53, + 60: reducemaxdiff_ptx_60, + 61: reducemaxdiff_ptx_61, + 70: reducemaxdiff_ptx_70, + 75: reducemaxdiff_ptx_75} // reducemaxdiff PTX code for various compute capabilities. -const( - reducemaxdiff_ptx_30 = ` +const ( + reducemaxdiff_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -207,7 +206,7 @@ BB0_10: ` - reducemaxdiff_ptx_35 = ` + reducemaxdiff_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -331,7 +330,7 @@ BB0_10: ` - reducemaxdiff_ptx_37 = ` + reducemaxdiff_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -455,7 +454,7 @@ BB0_10: ` - reducemaxdiff_ptx_50 = ` + reducemaxdiff_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -579,7 +578,7 @@ BB0_10: ` - reducemaxdiff_ptx_52 = ` + reducemaxdiff_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -703,7 +702,7 @@ BB0_10: ` - reducemaxdiff_ptx_53 = ` + reducemaxdiff_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -827,7 +826,7 @@ BB0_10: ` - reducemaxdiff_ptx_60 = ` + reducemaxdiff_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -951,7 +950,7 @@ BB0_10: ` - reducemaxdiff_ptx_61 = ` + reducemaxdiff_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1075,7 +1074,7 @@ BB0_10: ` - reducemaxdiff_ptx_70 = ` + reducemaxdiff_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1199,7 +1198,7 @@ BB0_10: ` - reducemaxdiff_ptx_75 = ` + reducemaxdiff_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1323,4 +1322,4 @@ BB0_10: ` - ) +) diff --git a/cuda/reducemaxvecdiff2_wrapper.go b/cuda/reducemaxvecdiff2_wrapper.go index e2d66886e..12051af67 100644 --- a/cuda/reducemaxvecdiff2_wrapper.go +++ b/cuda/reducemaxvecdiff2_wrapper.go @@ -5,50 +5,50 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for reducemaxvecdiff2 kernel var reducemaxvecdiff2_code cu.Function // Stores the arguments for reducemaxvecdiff2 kernel invocation -type reducemaxvecdiff2_args_t struct{ - arg_x1 unsafe.Pointer - arg_y1 unsafe.Pointer - arg_z1 unsafe.Pointer - arg_x2 unsafe.Pointer - arg_y2 unsafe.Pointer - arg_z2 unsafe.Pointer - arg_dst unsafe.Pointer - arg_initVal float32 - arg_n int - argptr [9]unsafe.Pointer +type reducemaxvecdiff2_args_t struct { + arg_x1 unsafe.Pointer + arg_y1 unsafe.Pointer + arg_z1 unsafe.Pointer + arg_x2 unsafe.Pointer + arg_y2 unsafe.Pointer + arg_z2 unsafe.Pointer + arg_dst unsafe.Pointer + arg_initVal float32 + arg_n int + argptr [9]unsafe.Pointer sync.Mutex } // Stores the arguments for reducemaxvecdiff2 kernel invocation var reducemaxvecdiff2_args reducemaxvecdiff2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - reducemaxvecdiff2_args.argptr[0] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_x1) - reducemaxvecdiff2_args.argptr[1] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_y1) - reducemaxvecdiff2_args.argptr[2] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_z1) - reducemaxvecdiff2_args.argptr[3] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_x2) - reducemaxvecdiff2_args.argptr[4] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_y2) - reducemaxvecdiff2_args.argptr[5] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_z2) - reducemaxvecdiff2_args.argptr[6] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_dst) - reducemaxvecdiff2_args.argptr[7] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_initVal) - reducemaxvecdiff2_args.argptr[8] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_n) - } + reducemaxvecdiff2_args.argptr[0] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_x1) + reducemaxvecdiff2_args.argptr[1] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_y1) + reducemaxvecdiff2_args.argptr[2] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_z1) + reducemaxvecdiff2_args.argptr[3] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_x2) + reducemaxvecdiff2_args.argptr[4] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_y2) + reducemaxvecdiff2_args.argptr[5] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_z2) + reducemaxvecdiff2_args.argptr[6] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_dst) + reducemaxvecdiff2_args.argptr[7] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_initVal) + reducemaxvecdiff2_args.argptr[8] = unsafe.Pointer(&reducemaxvecdiff2_args.arg_n) +} // Wrapper for reducemaxvecdiff2 CUDA kernel, asynchronous. -func k_reducemaxvecdiff2_async ( x1 unsafe.Pointer, y1 unsafe.Pointer, z1 unsafe.Pointer, x2 unsafe.Pointer, y2 unsafe.Pointer, z2 unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { - if Synchronous{ // debug +func k_reducemaxvecdiff2_async(x1 unsafe.Pointer, y1 unsafe.Pointer, z1 unsafe.Pointer, x2 unsafe.Pointer, y2 unsafe.Pointer, z2 unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("reducemaxvecdiff2") } @@ -56,46 +56,45 @@ func k_reducemaxvecdiff2_async ( x1 unsafe.Pointer, y1 unsafe.Pointer, z1 unsafe reducemaxvecdiff2_args.Lock() defer reducemaxvecdiff2_args.Unlock() - if reducemaxvecdiff2_code == 0{ + if reducemaxvecdiff2_code == 0 { reducemaxvecdiff2_code = fatbinLoad(reducemaxvecdiff2_map, "reducemaxvecdiff2") } - reducemaxvecdiff2_args.arg_x1 = x1 - reducemaxvecdiff2_args.arg_y1 = y1 - reducemaxvecdiff2_args.arg_z1 = z1 - reducemaxvecdiff2_args.arg_x2 = x2 - reducemaxvecdiff2_args.arg_y2 = y2 - reducemaxvecdiff2_args.arg_z2 = z2 - reducemaxvecdiff2_args.arg_dst = dst - reducemaxvecdiff2_args.arg_initVal = initVal - reducemaxvecdiff2_args.arg_n = n - + reducemaxvecdiff2_args.arg_x1 = x1 + reducemaxvecdiff2_args.arg_y1 = y1 + reducemaxvecdiff2_args.arg_z1 = z1 + reducemaxvecdiff2_args.arg_x2 = x2 + reducemaxvecdiff2_args.arg_y2 = y2 + reducemaxvecdiff2_args.arg_z2 = z2 + reducemaxvecdiff2_args.arg_dst = dst + reducemaxvecdiff2_args.arg_initVal = initVal + reducemaxvecdiff2_args.arg_n = n args := reducemaxvecdiff2_args.argptr[:] cu.LaunchKernel(reducemaxvecdiff2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("reducemaxvecdiff2") } } // maps compute capability on PTX code for reducemaxvecdiff2 kernel. -var reducemaxvecdiff2_map = map[int]string{ 0: "" , -30: reducemaxvecdiff2_ptx_30 , -35: reducemaxvecdiff2_ptx_35 , -37: reducemaxvecdiff2_ptx_37 , -50: reducemaxvecdiff2_ptx_50 , -52: reducemaxvecdiff2_ptx_52 , -53: reducemaxvecdiff2_ptx_53 , -60: reducemaxvecdiff2_ptx_60 , -61: reducemaxvecdiff2_ptx_61 , -70: reducemaxvecdiff2_ptx_70 , -75: reducemaxvecdiff2_ptx_75 } +var reducemaxvecdiff2_map = map[int]string{0: "", + 30: reducemaxvecdiff2_ptx_30, + 35: reducemaxvecdiff2_ptx_35, + 37: reducemaxvecdiff2_ptx_37, + 50: reducemaxvecdiff2_ptx_50, + 52: reducemaxvecdiff2_ptx_52, + 53: reducemaxvecdiff2_ptx_53, + 60: reducemaxvecdiff2_ptx_60, + 61: reducemaxvecdiff2_ptx_61, + 70: reducemaxvecdiff2_ptx_70, + 75: reducemaxvecdiff2_ptx_75} // reducemaxvecdiff2 PTX code for various compute capabilities. -const( - reducemaxvecdiff2_ptx_30 = ` +const ( + reducemaxvecdiff2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -243,7 +242,7 @@ BB0_10: ` - reducemaxvecdiff2_ptx_35 = ` + reducemaxvecdiff2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -392,7 +391,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_37 = ` + reducemaxvecdiff2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -541,7 +540,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_50 = ` + reducemaxvecdiff2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -690,7 +689,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_52 = ` + reducemaxvecdiff2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -839,7 +838,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_53 = ` + reducemaxvecdiff2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -988,7 +987,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_60 = ` + reducemaxvecdiff2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -1137,7 +1136,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_61 = ` + reducemaxvecdiff2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1286,7 +1285,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_70 = ` + reducemaxvecdiff2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1435,7 +1434,7 @@ BB0_11: ` - reducemaxvecdiff2_ptx_75 = ` + reducemaxvecdiff2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1584,4 +1583,4 @@ BB0_11: ` - ) +) diff --git a/cuda/reducemaxvecnorm2_wrapper.go b/cuda/reducemaxvecnorm2_wrapper.go index 26beea3f0..16b19fa75 100644 --- a/cuda/reducemaxvecnorm2_wrapper.go +++ b/cuda/reducemaxvecnorm2_wrapper.go @@ -5,44 +5,44 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for reducemaxvecnorm2 kernel var reducemaxvecnorm2_code cu.Function // Stores the arguments for reducemaxvecnorm2 kernel invocation -type reducemaxvecnorm2_args_t struct{ - arg_x unsafe.Pointer - arg_y unsafe.Pointer - arg_z unsafe.Pointer - arg_dst unsafe.Pointer - arg_initVal float32 - arg_n int - argptr [6]unsafe.Pointer +type reducemaxvecnorm2_args_t struct { + arg_x unsafe.Pointer + arg_y unsafe.Pointer + arg_z unsafe.Pointer + arg_dst unsafe.Pointer + arg_initVal float32 + arg_n int + argptr [6]unsafe.Pointer sync.Mutex } // Stores the arguments for reducemaxvecnorm2 kernel invocation var reducemaxvecnorm2_args reducemaxvecnorm2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - reducemaxvecnorm2_args.argptr[0] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_x) - reducemaxvecnorm2_args.argptr[1] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_y) - reducemaxvecnorm2_args.argptr[2] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_z) - reducemaxvecnorm2_args.argptr[3] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_dst) - reducemaxvecnorm2_args.argptr[4] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_initVal) - reducemaxvecnorm2_args.argptr[5] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_n) - } + reducemaxvecnorm2_args.argptr[0] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_x) + reducemaxvecnorm2_args.argptr[1] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_y) + reducemaxvecnorm2_args.argptr[2] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_z) + reducemaxvecnorm2_args.argptr[3] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_dst) + reducemaxvecnorm2_args.argptr[4] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_initVal) + reducemaxvecnorm2_args.argptr[5] = unsafe.Pointer(&reducemaxvecnorm2_args.arg_n) +} // Wrapper for reducemaxvecnorm2 CUDA kernel, asynchronous. -func k_reducemaxvecnorm2_async ( x unsafe.Pointer, y unsafe.Pointer, z unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { - if Synchronous{ // debug +func k_reducemaxvecnorm2_async(x unsafe.Pointer, y unsafe.Pointer, z unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("reducemaxvecnorm2") } @@ -50,43 +50,42 @@ func k_reducemaxvecnorm2_async ( x unsafe.Pointer, y unsafe.Pointer, z unsafe.Po reducemaxvecnorm2_args.Lock() defer reducemaxvecnorm2_args.Unlock() - if reducemaxvecnorm2_code == 0{ + if reducemaxvecnorm2_code == 0 { reducemaxvecnorm2_code = fatbinLoad(reducemaxvecnorm2_map, "reducemaxvecnorm2") } - reducemaxvecnorm2_args.arg_x = x - reducemaxvecnorm2_args.arg_y = y - reducemaxvecnorm2_args.arg_z = z - reducemaxvecnorm2_args.arg_dst = dst - reducemaxvecnorm2_args.arg_initVal = initVal - reducemaxvecnorm2_args.arg_n = n - + reducemaxvecnorm2_args.arg_x = x + reducemaxvecnorm2_args.arg_y = y + reducemaxvecnorm2_args.arg_z = z + reducemaxvecnorm2_args.arg_dst = dst + reducemaxvecnorm2_args.arg_initVal = initVal + reducemaxvecnorm2_args.arg_n = n args := reducemaxvecnorm2_args.argptr[:] cu.LaunchKernel(reducemaxvecnorm2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("reducemaxvecnorm2") } } // maps compute capability on PTX code for reducemaxvecnorm2 kernel. -var reducemaxvecnorm2_map = map[int]string{ 0: "" , -30: reducemaxvecnorm2_ptx_30 , -35: reducemaxvecnorm2_ptx_35 , -37: reducemaxvecnorm2_ptx_37 , -50: reducemaxvecnorm2_ptx_50 , -52: reducemaxvecnorm2_ptx_52 , -53: reducemaxvecnorm2_ptx_53 , -60: reducemaxvecnorm2_ptx_60 , -61: reducemaxvecnorm2_ptx_61 , -70: reducemaxvecnorm2_ptx_70 , -75: reducemaxvecnorm2_ptx_75 } +var reducemaxvecnorm2_map = map[int]string{0: "", + 30: reducemaxvecnorm2_ptx_30, + 35: reducemaxvecnorm2_ptx_35, + 37: reducemaxvecnorm2_ptx_37, + 50: reducemaxvecnorm2_ptx_50, + 52: reducemaxvecnorm2_ptx_52, + 53: reducemaxvecnorm2_ptx_53, + 60: reducemaxvecnorm2_ptx_60, + 61: reducemaxvecnorm2_ptx_61, + 70: reducemaxvecnorm2_ptx_70, + 75: reducemaxvecnorm2_ptx_75} // reducemaxvecnorm2 PTX code for various compute capabilities. -const( - reducemaxvecnorm2_ptx_30 = ` +const ( + reducemaxvecnorm2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -216,7 +215,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_35 = ` + reducemaxvecnorm2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -346,7 +345,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_37 = ` + reducemaxvecnorm2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -476,7 +475,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_50 = ` + reducemaxvecnorm2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -606,7 +605,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_52 = ` + reducemaxvecnorm2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -736,7 +735,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_53 = ` + reducemaxvecnorm2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -866,7 +865,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_60 = ` + reducemaxvecnorm2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -996,7 +995,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_61 = ` + reducemaxvecnorm2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1126,7 +1125,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_70 = ` + reducemaxvecnorm2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1256,7 +1255,7 @@ BB0_10: ` - reducemaxvecnorm2_ptx_75 = ` + reducemaxvecnorm2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1386,4 +1385,4 @@ BB0_10: ` - ) +) diff --git a/cuda/reducesum_wrapper.go b/cuda/reducesum_wrapper.go index 4adea9b0c..a3b2688d4 100644 --- a/cuda/reducesum_wrapper.go +++ b/cuda/reducesum_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for reducesum kernel var reducesum_code cu.Function // Stores the arguments for reducesum kernel invocation -type reducesum_args_t struct{ - arg_src unsafe.Pointer - arg_dst unsafe.Pointer - arg_initVal float32 - arg_n int - argptr [4]unsafe.Pointer +type reducesum_args_t struct { + arg_src unsafe.Pointer + arg_dst unsafe.Pointer + arg_initVal float32 + arg_n int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for reducesum kernel invocation var reducesum_args reducesum_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - reducesum_args.argptr[0] = unsafe.Pointer(&reducesum_args.arg_src) - reducesum_args.argptr[1] = unsafe.Pointer(&reducesum_args.arg_dst) - reducesum_args.argptr[2] = unsafe.Pointer(&reducesum_args.arg_initVal) - reducesum_args.argptr[3] = unsafe.Pointer(&reducesum_args.arg_n) - } + reducesum_args.argptr[0] = unsafe.Pointer(&reducesum_args.arg_src) + reducesum_args.argptr[1] = unsafe.Pointer(&reducesum_args.arg_dst) + reducesum_args.argptr[2] = unsafe.Pointer(&reducesum_args.arg_initVal) + reducesum_args.argptr[3] = unsafe.Pointer(&reducesum_args.arg_n) +} // Wrapper for reducesum CUDA kernel, asynchronous. -func k_reducesum_async ( src unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { - if Synchronous{ // debug +func k_reducesum_async(src unsafe.Pointer, dst unsafe.Pointer, initVal float32, n int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("reducesum") } @@ -46,41 +46,40 @@ func k_reducesum_async ( src unsafe.Pointer, dst unsafe.Pointer, initVal float32 reducesum_args.Lock() defer reducesum_args.Unlock() - if reducesum_code == 0{ + if reducesum_code == 0 { reducesum_code = fatbinLoad(reducesum_map, "reducesum") } - reducesum_args.arg_src = src - reducesum_args.arg_dst = dst - reducesum_args.arg_initVal = initVal - reducesum_args.arg_n = n - + reducesum_args.arg_src = src + reducesum_args.arg_dst = dst + reducesum_args.arg_initVal = initVal + reducesum_args.arg_n = n args := reducesum_args.argptr[:] cu.LaunchKernel(reducesum_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("reducesum") } } // maps compute capability on PTX code for reducesum kernel. -var reducesum_map = map[int]string{ 0: "" , -30: reducesum_ptx_30 , -35: reducesum_ptx_35 , -37: reducesum_ptx_37 , -50: reducesum_ptx_50 , -52: reducesum_ptx_52 , -53: reducesum_ptx_53 , -60: reducesum_ptx_60 , -61: reducesum_ptx_61 , -70: reducesum_ptx_70 , -75: reducesum_ptx_75 } +var reducesum_map = map[int]string{0: "", + 30: reducesum_ptx_30, + 35: reducesum_ptx_35, + 37: reducesum_ptx_37, + 50: reducesum_ptx_50, + 52: reducesum_ptx_52, + 53: reducesum_ptx_53, + 60: reducesum_ptx_60, + 61: reducesum_ptx_61, + 70: reducesum_ptx_70, + 75: reducesum_ptx_75} // reducesum PTX code for various compute capabilities. -const( - reducesum_ptx_30 = ` +const ( + reducesum_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -195,7 +194,7 @@ BB0_10: ` - reducesum_ptx_35 = ` + reducesum_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -310,7 +309,7 @@ BB0_10: ` - reducesum_ptx_37 = ` + reducesum_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -425,7 +424,7 @@ BB0_10: ` - reducesum_ptx_50 = ` + reducesum_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -540,7 +539,7 @@ BB0_10: ` - reducesum_ptx_52 = ` + reducesum_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -655,7 +654,7 @@ BB0_10: ` - reducesum_ptx_53 = ` + reducesum_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -770,7 +769,7 @@ BB0_10: ` - reducesum_ptx_60 = ` + reducesum_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -885,7 +884,7 @@ BB0_10: ` - reducesum_ptx_61 = ` + reducesum_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1000,7 +999,7 @@ BB0_10: ` - reducesum_ptx_70 = ` + reducesum_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1115,7 +1114,7 @@ BB0_10: ` - reducesum_ptx_75 = ` + reducesum_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1230,4 +1229,4 @@ BB0_10: ` - ) +) diff --git a/cuda/regionadds_wrapper.go b/cuda/regionadds_wrapper.go index 4dbbfd9de..d69f2645d 100644 --- a/cuda/regionadds_wrapper.go +++ b/cuda/regionadds_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for regionadds kernel var regionadds_code cu.Function // Stores the arguments for regionadds kernel invocation -type regionadds_args_t struct{ - arg_dst unsafe.Pointer - arg_LUT unsafe.Pointer - arg_regions unsafe.Pointer - arg_N int - argptr [4]unsafe.Pointer +type regionadds_args_t struct { + arg_dst unsafe.Pointer + arg_LUT unsafe.Pointer + arg_regions unsafe.Pointer + arg_N int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for regionadds kernel invocation var regionadds_args regionadds_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - regionadds_args.argptr[0] = unsafe.Pointer(®ionadds_args.arg_dst) - regionadds_args.argptr[1] = unsafe.Pointer(®ionadds_args.arg_LUT) - regionadds_args.argptr[2] = unsafe.Pointer(®ionadds_args.arg_regions) - regionadds_args.argptr[3] = unsafe.Pointer(®ionadds_args.arg_N) - } + regionadds_args.argptr[0] = unsafe.Pointer(®ionadds_args.arg_dst) + regionadds_args.argptr[1] = unsafe.Pointer(®ionadds_args.arg_LUT) + regionadds_args.argptr[2] = unsafe.Pointer(®ionadds_args.arg_regions) + regionadds_args.argptr[3] = unsafe.Pointer(®ionadds_args.arg_N) +} // Wrapper for regionadds CUDA kernel, asynchronous. -func k_regionadds_async ( dst unsafe.Pointer, LUT unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_regionadds_async(dst unsafe.Pointer, LUT unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("regionadds") } @@ -46,41 +46,40 @@ func k_regionadds_async ( dst unsafe.Pointer, LUT unsafe.Pointer, regions unsafe regionadds_args.Lock() defer regionadds_args.Unlock() - if regionadds_code == 0{ + if regionadds_code == 0 { regionadds_code = fatbinLoad(regionadds_map, "regionadds") } - regionadds_args.arg_dst = dst - regionadds_args.arg_LUT = LUT - regionadds_args.arg_regions = regions - regionadds_args.arg_N = N - + regionadds_args.arg_dst = dst + regionadds_args.arg_LUT = LUT + regionadds_args.arg_regions = regions + regionadds_args.arg_N = N args := regionadds_args.argptr[:] cu.LaunchKernel(regionadds_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("regionadds") } } // maps compute capability on PTX code for regionadds kernel. -var regionadds_map = map[int]string{ 0: "" , -30: regionadds_ptx_30 , -35: regionadds_ptx_35 , -37: regionadds_ptx_37 , -50: regionadds_ptx_50 , -52: regionadds_ptx_52 , -53: regionadds_ptx_53 , -60: regionadds_ptx_60 , -61: regionadds_ptx_61 , -70: regionadds_ptx_70 , -75: regionadds_ptx_75 } +var regionadds_map = map[int]string{0: "", + 30: regionadds_ptx_30, + 35: regionadds_ptx_35, + 37: regionadds_ptx_37, + 50: regionadds_ptx_50, + 52: regionadds_ptx_52, + 53: regionadds_ptx_53, + 60: regionadds_ptx_60, + 61: regionadds_ptx_61, + 70: regionadds_ptx_70, + 75: regionadds_ptx_75} // regionadds PTX code for various compute capabilities. -const( - regionadds_ptx_30 = ` +const ( + regionadds_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -135,7 +134,7 @@ BB0_2: ` - regionadds_ptx_35 = ` + regionadds_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -193,7 +192,7 @@ BB0_2: ` - regionadds_ptx_37 = ` + regionadds_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -251,7 +250,7 @@ BB0_2: ` - regionadds_ptx_50 = ` + regionadds_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -309,7 +308,7 @@ BB0_2: ` - regionadds_ptx_52 = ` + regionadds_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -367,7 +366,7 @@ BB0_2: ` - regionadds_ptx_53 = ` + regionadds_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -425,7 +424,7 @@ BB0_2: ` - regionadds_ptx_60 = ` + regionadds_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -483,7 +482,7 @@ BB0_2: ` - regionadds_ptx_61 = ` + regionadds_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -541,7 +540,7 @@ BB0_2: ` - regionadds_ptx_70 = ` + regionadds_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -599,7 +598,7 @@ BB0_2: ` - regionadds_ptx_75 = ` + regionadds_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -657,4 +656,4 @@ BB0_2: ` - ) +) diff --git a/cuda/regionaddv_wrapper.go b/cuda/regionaddv_wrapper.go index 81cbbe626..d668056d3 100644 --- a/cuda/regionaddv_wrapper.go +++ b/cuda/regionaddv_wrapper.go @@ -5,48 +5,48 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for regionaddv kernel var regionaddv_code cu.Function // Stores the arguments for regionaddv kernel invocation -type regionaddv_args_t struct{ - arg_dstx unsafe.Pointer - arg_dsty unsafe.Pointer - arg_dstz unsafe.Pointer - arg_LUTx unsafe.Pointer - arg_LUTy unsafe.Pointer - arg_LUTz unsafe.Pointer - arg_regions unsafe.Pointer - arg_N int - argptr [8]unsafe.Pointer +type regionaddv_args_t struct { + arg_dstx unsafe.Pointer + arg_dsty unsafe.Pointer + arg_dstz unsafe.Pointer + arg_LUTx unsafe.Pointer + arg_LUTy unsafe.Pointer + arg_LUTz unsafe.Pointer + arg_regions unsafe.Pointer + arg_N int + argptr [8]unsafe.Pointer sync.Mutex } // Stores the arguments for regionaddv kernel invocation var regionaddv_args regionaddv_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - regionaddv_args.argptr[0] = unsafe.Pointer(®ionaddv_args.arg_dstx) - regionaddv_args.argptr[1] = unsafe.Pointer(®ionaddv_args.arg_dsty) - regionaddv_args.argptr[2] = unsafe.Pointer(®ionaddv_args.arg_dstz) - regionaddv_args.argptr[3] = unsafe.Pointer(®ionaddv_args.arg_LUTx) - regionaddv_args.argptr[4] = unsafe.Pointer(®ionaddv_args.arg_LUTy) - regionaddv_args.argptr[5] = unsafe.Pointer(®ionaddv_args.arg_LUTz) - regionaddv_args.argptr[6] = unsafe.Pointer(®ionaddv_args.arg_regions) - regionaddv_args.argptr[7] = unsafe.Pointer(®ionaddv_args.arg_N) - } + regionaddv_args.argptr[0] = unsafe.Pointer(®ionaddv_args.arg_dstx) + regionaddv_args.argptr[1] = unsafe.Pointer(®ionaddv_args.arg_dsty) + regionaddv_args.argptr[2] = unsafe.Pointer(®ionaddv_args.arg_dstz) + regionaddv_args.argptr[3] = unsafe.Pointer(®ionaddv_args.arg_LUTx) + regionaddv_args.argptr[4] = unsafe.Pointer(®ionaddv_args.arg_LUTy) + regionaddv_args.argptr[5] = unsafe.Pointer(®ionaddv_args.arg_LUTz) + regionaddv_args.argptr[6] = unsafe.Pointer(®ionaddv_args.arg_regions) + regionaddv_args.argptr[7] = unsafe.Pointer(®ionaddv_args.arg_N) +} // Wrapper for regionaddv CUDA kernel, asynchronous. -func k_regionaddv_async ( dstx unsafe.Pointer, dsty unsafe.Pointer, dstz unsafe.Pointer, LUTx unsafe.Pointer, LUTy unsafe.Pointer, LUTz unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_regionaddv_async(dstx unsafe.Pointer, dsty unsafe.Pointer, dstz unsafe.Pointer, LUTx unsafe.Pointer, LUTy unsafe.Pointer, LUTz unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("regionaddv") } @@ -54,45 +54,44 @@ func k_regionaddv_async ( dstx unsafe.Pointer, dsty unsafe.Pointer, dstz unsafe. regionaddv_args.Lock() defer regionaddv_args.Unlock() - if regionaddv_code == 0{ + if regionaddv_code == 0 { regionaddv_code = fatbinLoad(regionaddv_map, "regionaddv") } - regionaddv_args.arg_dstx = dstx - regionaddv_args.arg_dsty = dsty - regionaddv_args.arg_dstz = dstz - regionaddv_args.arg_LUTx = LUTx - regionaddv_args.arg_LUTy = LUTy - regionaddv_args.arg_LUTz = LUTz - regionaddv_args.arg_regions = regions - regionaddv_args.arg_N = N - + regionaddv_args.arg_dstx = dstx + regionaddv_args.arg_dsty = dsty + regionaddv_args.arg_dstz = dstz + regionaddv_args.arg_LUTx = LUTx + regionaddv_args.arg_LUTy = LUTy + regionaddv_args.arg_LUTz = LUTz + regionaddv_args.arg_regions = regions + regionaddv_args.arg_N = N args := regionaddv_args.argptr[:] cu.LaunchKernel(regionaddv_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("regionaddv") } } // maps compute capability on PTX code for regionaddv kernel. -var regionaddv_map = map[int]string{ 0: "" , -30: regionaddv_ptx_30 , -35: regionaddv_ptx_35 , -37: regionaddv_ptx_37 , -50: regionaddv_ptx_50 , -52: regionaddv_ptx_52 , -53: regionaddv_ptx_53 , -60: regionaddv_ptx_60 , -61: regionaddv_ptx_61 , -70: regionaddv_ptx_70 , -75: regionaddv_ptx_75 } +var regionaddv_map = map[int]string{0: "", + 30: regionaddv_ptx_30, + 35: regionaddv_ptx_35, + 37: regionaddv_ptx_37, + 50: regionaddv_ptx_50, + 52: regionaddv_ptx_52, + 53: regionaddv_ptx_53, + 60: regionaddv_ptx_60, + 61: regionaddv_ptx_61, + 70: regionaddv_ptx_70, + 75: regionaddv_ptx_75} // regionaddv PTX code for various compute capabilities. -const( - regionaddv_ptx_30 = ` +const ( + regionaddv_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -171,7 +170,7 @@ BB0_2: ` - regionaddv_ptx_35 = ` + regionaddv_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -253,7 +252,7 @@ BB0_2: ` - regionaddv_ptx_37 = ` + regionaddv_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -335,7 +334,7 @@ BB0_2: ` - regionaddv_ptx_50 = ` + regionaddv_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -417,7 +416,7 @@ BB0_2: ` - regionaddv_ptx_52 = ` + regionaddv_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -499,7 +498,7 @@ BB0_2: ` - regionaddv_ptx_53 = ` + regionaddv_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -581,7 +580,7 @@ BB0_2: ` - regionaddv_ptx_60 = ` + regionaddv_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -663,7 +662,7 @@ BB0_2: ` - regionaddv_ptx_61 = ` + regionaddv_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -745,7 +744,7 @@ BB0_2: ` - regionaddv_ptx_70 = ` + regionaddv_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -827,7 +826,7 @@ BB0_2: ` - regionaddv_ptx_75 = ` + regionaddv_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -909,4 +908,4 @@ BB0_2: ` - ) +) diff --git a/cuda/regiondecode_wrapper.go b/cuda/regiondecode_wrapper.go index 9f4c44f2e..f79f41dcc 100644 --- a/cuda/regiondecode_wrapper.go +++ b/cuda/regiondecode_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for regiondecode kernel var regiondecode_code cu.Function // Stores the arguments for regiondecode kernel invocation -type regiondecode_args_t struct{ - arg_dst unsafe.Pointer - arg_LUT unsafe.Pointer - arg_regions unsafe.Pointer - arg_N int - argptr [4]unsafe.Pointer +type regiondecode_args_t struct { + arg_dst unsafe.Pointer + arg_LUT unsafe.Pointer + arg_regions unsafe.Pointer + arg_N int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for regiondecode kernel invocation var regiondecode_args regiondecode_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - regiondecode_args.argptr[0] = unsafe.Pointer(®iondecode_args.arg_dst) - regiondecode_args.argptr[1] = unsafe.Pointer(®iondecode_args.arg_LUT) - regiondecode_args.argptr[2] = unsafe.Pointer(®iondecode_args.arg_regions) - regiondecode_args.argptr[3] = unsafe.Pointer(®iondecode_args.arg_N) - } + regiondecode_args.argptr[0] = unsafe.Pointer(®iondecode_args.arg_dst) + regiondecode_args.argptr[1] = unsafe.Pointer(®iondecode_args.arg_LUT) + regiondecode_args.argptr[2] = unsafe.Pointer(®iondecode_args.arg_regions) + regiondecode_args.argptr[3] = unsafe.Pointer(®iondecode_args.arg_N) +} // Wrapper for regiondecode CUDA kernel, asynchronous. -func k_regiondecode_async ( dst unsafe.Pointer, LUT unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_regiondecode_async(dst unsafe.Pointer, LUT unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("regiondecode") } @@ -46,41 +46,40 @@ func k_regiondecode_async ( dst unsafe.Pointer, LUT unsafe.Pointer, regions unsa regiondecode_args.Lock() defer regiondecode_args.Unlock() - if regiondecode_code == 0{ + if regiondecode_code == 0 { regiondecode_code = fatbinLoad(regiondecode_map, "regiondecode") } - regiondecode_args.arg_dst = dst - regiondecode_args.arg_LUT = LUT - regiondecode_args.arg_regions = regions - regiondecode_args.arg_N = N - + regiondecode_args.arg_dst = dst + regiondecode_args.arg_LUT = LUT + regiondecode_args.arg_regions = regions + regiondecode_args.arg_N = N args := regiondecode_args.argptr[:] cu.LaunchKernel(regiondecode_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("regiondecode") } } // maps compute capability on PTX code for regiondecode kernel. -var regiondecode_map = map[int]string{ 0: "" , -30: regiondecode_ptx_30 , -35: regiondecode_ptx_35 , -37: regiondecode_ptx_37 , -50: regiondecode_ptx_50 , -52: regiondecode_ptx_52 , -53: regiondecode_ptx_53 , -60: regiondecode_ptx_60 , -61: regiondecode_ptx_61 , -70: regiondecode_ptx_70 , -75: regiondecode_ptx_75 } +var regiondecode_map = map[int]string{0: "", + 30: regiondecode_ptx_30, + 35: regiondecode_ptx_35, + 37: regiondecode_ptx_37, + 50: regiondecode_ptx_50, + 52: regiondecode_ptx_52, + 53: regiondecode_ptx_53, + 60: regiondecode_ptx_60, + 61: regiondecode_ptx_61, + 70: regiondecode_ptx_70, + 75: regiondecode_ptx_75} // regiondecode PTX code for various compute capabilities. -const( - regiondecode_ptx_30 = ` +const ( + regiondecode_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -133,7 +132,7 @@ BB0_2: ` - regiondecode_ptx_35 = ` + regiondecode_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -189,7 +188,7 @@ BB0_2: ` - regiondecode_ptx_37 = ` + regiondecode_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -245,7 +244,7 @@ BB0_2: ` - regiondecode_ptx_50 = ` + regiondecode_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -301,7 +300,7 @@ BB0_2: ` - regiondecode_ptx_52 = ` + regiondecode_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -357,7 +356,7 @@ BB0_2: ` - regiondecode_ptx_53 = ` + regiondecode_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -413,7 +412,7 @@ BB0_2: ` - regiondecode_ptx_60 = ` + regiondecode_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -469,7 +468,7 @@ BB0_2: ` - regiondecode_ptx_61 = ` + regiondecode_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -525,7 +524,7 @@ BB0_2: ` - regiondecode_ptx_70 = ` + regiondecode_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -581,7 +580,7 @@ BB0_2: ` - regiondecode_ptx_75 = ` + regiondecode_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -637,4 +636,4 @@ BB0_2: ` - ) +) diff --git a/cuda/regionselect_wrapper.go b/cuda/regionselect_wrapper.go index 6c5cd8a6d..eaa282953 100644 --- a/cuda/regionselect_wrapper.go +++ b/cuda/regionselect_wrapper.go @@ -5,42 +5,42 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for regionselect kernel var regionselect_code cu.Function // Stores the arguments for regionselect kernel invocation -type regionselect_args_t struct{ - arg_dst unsafe.Pointer - arg_src unsafe.Pointer - arg_regions unsafe.Pointer - arg_region byte - arg_N int - argptr [5]unsafe.Pointer +type regionselect_args_t struct { + arg_dst unsafe.Pointer + arg_src unsafe.Pointer + arg_regions unsafe.Pointer + arg_region byte + arg_N int + argptr [5]unsafe.Pointer sync.Mutex } // Stores the arguments for regionselect kernel invocation var regionselect_args regionselect_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - regionselect_args.argptr[0] = unsafe.Pointer(®ionselect_args.arg_dst) - regionselect_args.argptr[1] = unsafe.Pointer(®ionselect_args.arg_src) - regionselect_args.argptr[2] = unsafe.Pointer(®ionselect_args.arg_regions) - regionselect_args.argptr[3] = unsafe.Pointer(®ionselect_args.arg_region) - regionselect_args.argptr[4] = unsafe.Pointer(®ionselect_args.arg_N) - } + regionselect_args.argptr[0] = unsafe.Pointer(®ionselect_args.arg_dst) + regionselect_args.argptr[1] = unsafe.Pointer(®ionselect_args.arg_src) + regionselect_args.argptr[2] = unsafe.Pointer(®ionselect_args.arg_regions) + regionselect_args.argptr[3] = unsafe.Pointer(®ionselect_args.arg_region) + regionselect_args.argptr[4] = unsafe.Pointer(®ionselect_args.arg_N) +} // Wrapper for regionselect CUDA kernel, asynchronous. -func k_regionselect_async ( dst unsafe.Pointer, src unsafe.Pointer, regions unsafe.Pointer, region byte, N int, cfg *config) { - if Synchronous{ // debug +func k_regionselect_async(dst unsafe.Pointer, src unsafe.Pointer, regions unsafe.Pointer, region byte, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("regionselect") } @@ -48,42 +48,41 @@ func k_regionselect_async ( dst unsafe.Pointer, src unsafe.Pointer, regions unsa regionselect_args.Lock() defer regionselect_args.Unlock() - if regionselect_code == 0{ + if regionselect_code == 0 { regionselect_code = fatbinLoad(regionselect_map, "regionselect") } - regionselect_args.arg_dst = dst - regionselect_args.arg_src = src - regionselect_args.arg_regions = regions - regionselect_args.arg_region = region - regionselect_args.arg_N = N - + regionselect_args.arg_dst = dst + regionselect_args.arg_src = src + regionselect_args.arg_regions = regions + regionselect_args.arg_region = region + regionselect_args.arg_N = N args := regionselect_args.argptr[:] cu.LaunchKernel(regionselect_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("regionselect") } } // maps compute capability on PTX code for regionselect kernel. -var regionselect_map = map[int]string{ 0: "" , -30: regionselect_ptx_30 , -35: regionselect_ptx_35 , -37: regionselect_ptx_37 , -50: regionselect_ptx_50 , -52: regionselect_ptx_52 , -53: regionselect_ptx_53 , -60: regionselect_ptx_60 , -61: regionselect_ptx_61 , -70: regionselect_ptx_70 , -75: regionselect_ptx_75 } +var regionselect_map = map[int]string{0: "", + 30: regionselect_ptx_30, + 35: regionselect_ptx_35, + 37: regionselect_ptx_37, + 50: regionselect_ptx_50, + 52: regionselect_ptx_52, + 53: regionselect_ptx_53, + 60: regionselect_ptx_60, + 61: regionselect_ptx_61, + 70: regionselect_ptx_70, + 75: regionselect_ptx_75} // regionselect PTX code for various compute capabilities. -const( - regionselect_ptx_30 = ` +const ( + regionselect_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -145,7 +144,7 @@ BB0_4: ` - regionselect_ptx_35 = ` + regionselect_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -207,7 +206,7 @@ BB0_4: ` - regionselect_ptx_37 = ` + regionselect_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -269,7 +268,7 @@ BB0_4: ` - regionselect_ptx_50 = ` + regionselect_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -331,7 +330,7 @@ BB0_4: ` - regionselect_ptx_52 = ` + regionselect_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -393,7 +392,7 @@ BB0_4: ` - regionselect_ptx_53 = ` + regionselect_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -455,7 +454,7 @@ BB0_4: ` - regionselect_ptx_60 = ` + regionselect_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -517,7 +516,7 @@ BB0_4: ` - regionselect_ptx_61 = ` + regionselect_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -579,7 +578,7 @@ BB0_4: ` - regionselect_ptx_70 = ` + regionselect_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -641,7 +640,7 @@ BB0_4: ` - regionselect_ptx_75 = ` + regionselect_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -703,4 +702,4 @@ BB0_4: ` - ) +) diff --git a/cuda/resize_wrapper.go b/cuda/resize_wrapper.go index 6ffd7388f..11140a5a3 100644 --- a/cuda/resize_wrapper.go +++ b/cuda/resize_wrapper.go @@ -5,54 +5,54 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for resize kernel var resize_code cu.Function // Stores the arguments for resize kernel invocation -type resize_args_t struct{ - arg_dst unsafe.Pointer - arg_Dx int - arg_Dy int - arg_Dz int - arg_src unsafe.Pointer - arg_Sx int - arg_Sy int - arg_Sz int - arg_layer int - arg_scalex int - arg_scaley int - argptr [11]unsafe.Pointer +type resize_args_t struct { + arg_dst unsafe.Pointer + arg_Dx int + arg_Dy int + arg_Dz int + arg_src unsafe.Pointer + arg_Sx int + arg_Sy int + arg_Sz int + arg_layer int + arg_scalex int + arg_scaley int + argptr [11]unsafe.Pointer sync.Mutex } // Stores the arguments for resize kernel invocation var resize_args resize_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - resize_args.argptr[0] = unsafe.Pointer(&resize_args.arg_dst) - resize_args.argptr[1] = unsafe.Pointer(&resize_args.arg_Dx) - resize_args.argptr[2] = unsafe.Pointer(&resize_args.arg_Dy) - resize_args.argptr[3] = unsafe.Pointer(&resize_args.arg_Dz) - resize_args.argptr[4] = unsafe.Pointer(&resize_args.arg_src) - resize_args.argptr[5] = unsafe.Pointer(&resize_args.arg_Sx) - resize_args.argptr[6] = unsafe.Pointer(&resize_args.arg_Sy) - resize_args.argptr[7] = unsafe.Pointer(&resize_args.arg_Sz) - resize_args.argptr[8] = unsafe.Pointer(&resize_args.arg_layer) - resize_args.argptr[9] = unsafe.Pointer(&resize_args.arg_scalex) - resize_args.argptr[10] = unsafe.Pointer(&resize_args.arg_scaley) - } + resize_args.argptr[0] = unsafe.Pointer(&resize_args.arg_dst) + resize_args.argptr[1] = unsafe.Pointer(&resize_args.arg_Dx) + resize_args.argptr[2] = unsafe.Pointer(&resize_args.arg_Dy) + resize_args.argptr[3] = unsafe.Pointer(&resize_args.arg_Dz) + resize_args.argptr[4] = unsafe.Pointer(&resize_args.arg_src) + resize_args.argptr[5] = unsafe.Pointer(&resize_args.arg_Sx) + resize_args.argptr[6] = unsafe.Pointer(&resize_args.arg_Sy) + resize_args.argptr[7] = unsafe.Pointer(&resize_args.arg_Sz) + resize_args.argptr[8] = unsafe.Pointer(&resize_args.arg_layer) + resize_args.argptr[9] = unsafe.Pointer(&resize_args.arg_scalex) + resize_args.argptr[10] = unsafe.Pointer(&resize_args.arg_scaley) +} // Wrapper for resize CUDA kernel, asynchronous. -func k_resize_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, layer int, scalex int, scaley int, cfg *config) { - if Synchronous{ // debug +func k_resize_async(dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Pointer, Sx int, Sy int, Sz int, layer int, scalex int, scaley int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("resize") } @@ -60,48 +60,47 @@ func k_resize_async ( dst unsafe.Pointer, Dx int, Dy int, Dz int, src unsafe.Poi resize_args.Lock() defer resize_args.Unlock() - if resize_code == 0{ + if resize_code == 0 { resize_code = fatbinLoad(resize_map, "resize") } - resize_args.arg_dst = dst - resize_args.arg_Dx = Dx - resize_args.arg_Dy = Dy - resize_args.arg_Dz = Dz - resize_args.arg_src = src - resize_args.arg_Sx = Sx - resize_args.arg_Sy = Sy - resize_args.arg_Sz = Sz - resize_args.arg_layer = layer - resize_args.arg_scalex = scalex - resize_args.arg_scaley = scaley - + resize_args.arg_dst = dst + resize_args.arg_Dx = Dx + resize_args.arg_Dy = Dy + resize_args.arg_Dz = Dz + resize_args.arg_src = src + resize_args.arg_Sx = Sx + resize_args.arg_Sy = Sy + resize_args.arg_Sz = Sz + resize_args.arg_layer = layer + resize_args.arg_scalex = scalex + resize_args.arg_scaley = scaley args := resize_args.argptr[:] cu.LaunchKernel(resize_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("resize") } } // maps compute capability on PTX code for resize kernel. -var resize_map = map[int]string{ 0: "" , -30: resize_ptx_30 , -35: resize_ptx_35 , -37: resize_ptx_37 , -50: resize_ptx_50 , -52: resize_ptx_52 , -53: resize_ptx_53 , -60: resize_ptx_60 , -61: resize_ptx_61 , -70: resize_ptx_70 , -75: resize_ptx_75 } +var resize_map = map[int]string{0: "", + 30: resize_ptx_30, + 35: resize_ptx_35, + 37: resize_ptx_37, + 50: resize_ptx_50, + 52: resize_ptx_52, + 53: resize_ptx_53, + 60: resize_ptx_60, + 61: resize_ptx_61, + 70: resize_ptx_70, + 75: resize_ptx_75} // resize PTX code for various compute capabilities. -const( - resize_ptx_30 = ` +const ( + resize_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -332,7 +331,7 @@ BB0_29: ` - resize_ptx_35 = ` + resize_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -562,7 +561,7 @@ BB0_29: ` - resize_ptx_37 = ` + resize_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -792,7 +791,7 @@ BB0_29: ` - resize_ptx_50 = ` + resize_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1022,7 +1021,7 @@ BB0_29: ` - resize_ptx_52 = ` + resize_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -1252,7 +1251,7 @@ BB0_29: ` - resize_ptx_53 = ` + resize_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -1482,7 +1481,7 @@ BB0_29: ` - resize_ptx_60 = ` + resize_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -1712,7 +1711,7 @@ BB0_29: ` - resize_ptx_61 = ` + resize_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1942,7 +1941,7 @@ BB0_29: ` - resize_ptx_70 = ` + resize_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -2172,7 +2171,7 @@ BB0_29: ` - resize_ptx_75 = ` + resize_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -2402,4 +2401,4 @@ BB0_29: ` - ) +) diff --git a/cuda/shiftbytes_wrapper.go b/cuda/shiftbytes_wrapper.go index d023adef9..377ccfcfb 100644 --- a/cuda/shiftbytes_wrapper.go +++ b/cuda/shiftbytes_wrapper.go @@ -5,46 +5,46 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for shiftbytes kernel var shiftbytes_code cu.Function // Stores the arguments for shiftbytes kernel invocation -type shiftbytes_args_t struct{ - arg_dst unsafe.Pointer - arg_src unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - arg_shx int - arg_clamp byte - argptr [7]unsafe.Pointer +type shiftbytes_args_t struct { + arg_dst unsafe.Pointer + arg_src unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + arg_shx int + arg_clamp byte + argptr [7]unsafe.Pointer sync.Mutex } // Stores the arguments for shiftbytes kernel invocation var shiftbytes_args shiftbytes_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - shiftbytes_args.argptr[0] = unsafe.Pointer(&shiftbytes_args.arg_dst) - shiftbytes_args.argptr[1] = unsafe.Pointer(&shiftbytes_args.arg_src) - shiftbytes_args.argptr[2] = unsafe.Pointer(&shiftbytes_args.arg_Nx) - shiftbytes_args.argptr[3] = unsafe.Pointer(&shiftbytes_args.arg_Ny) - shiftbytes_args.argptr[4] = unsafe.Pointer(&shiftbytes_args.arg_Nz) - shiftbytes_args.argptr[5] = unsafe.Pointer(&shiftbytes_args.arg_shx) - shiftbytes_args.argptr[6] = unsafe.Pointer(&shiftbytes_args.arg_clamp) - } + shiftbytes_args.argptr[0] = unsafe.Pointer(&shiftbytes_args.arg_dst) + shiftbytes_args.argptr[1] = unsafe.Pointer(&shiftbytes_args.arg_src) + shiftbytes_args.argptr[2] = unsafe.Pointer(&shiftbytes_args.arg_Nx) + shiftbytes_args.argptr[3] = unsafe.Pointer(&shiftbytes_args.arg_Ny) + shiftbytes_args.argptr[4] = unsafe.Pointer(&shiftbytes_args.arg_Nz) + shiftbytes_args.argptr[5] = unsafe.Pointer(&shiftbytes_args.arg_shx) + shiftbytes_args.argptr[6] = unsafe.Pointer(&shiftbytes_args.arg_clamp) +} // Wrapper for shiftbytes CUDA kernel, asynchronous. -func k_shiftbytes_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shx int, clamp byte, cfg *config) { - if Synchronous{ // debug +func k_shiftbytes_async(dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shx int, clamp byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("shiftbytes") } @@ -52,44 +52,43 @@ func k_shiftbytes_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int shiftbytes_args.Lock() defer shiftbytes_args.Unlock() - if shiftbytes_code == 0{ + if shiftbytes_code == 0 { shiftbytes_code = fatbinLoad(shiftbytes_map, "shiftbytes") } - shiftbytes_args.arg_dst = dst - shiftbytes_args.arg_src = src - shiftbytes_args.arg_Nx = Nx - shiftbytes_args.arg_Ny = Ny - shiftbytes_args.arg_Nz = Nz - shiftbytes_args.arg_shx = shx - shiftbytes_args.arg_clamp = clamp - + shiftbytes_args.arg_dst = dst + shiftbytes_args.arg_src = src + shiftbytes_args.arg_Nx = Nx + shiftbytes_args.arg_Ny = Ny + shiftbytes_args.arg_Nz = Nz + shiftbytes_args.arg_shx = shx + shiftbytes_args.arg_clamp = clamp args := shiftbytes_args.argptr[:] cu.LaunchKernel(shiftbytes_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("shiftbytes") } } // maps compute capability on PTX code for shiftbytes kernel. -var shiftbytes_map = map[int]string{ 0: "" , -30: shiftbytes_ptx_30 , -35: shiftbytes_ptx_35 , -37: shiftbytes_ptx_37 , -50: shiftbytes_ptx_50 , -52: shiftbytes_ptx_52 , -53: shiftbytes_ptx_53 , -60: shiftbytes_ptx_60 , -61: shiftbytes_ptx_61 , -70: shiftbytes_ptx_70 , -75: shiftbytes_ptx_75 } +var shiftbytes_map = map[int]string{0: "", + 30: shiftbytes_ptx_30, + 35: shiftbytes_ptx_35, + 37: shiftbytes_ptx_37, + 50: shiftbytes_ptx_50, + 52: shiftbytes_ptx_52, + 53: shiftbytes_ptx_53, + 60: shiftbytes_ptx_60, + 61: shiftbytes_ptx_61, + 70: shiftbytes_ptx_70, + 75: shiftbytes_ptx_75} // shiftbytes PTX code for various compute capabilities. -const( - shiftbytes_ptx_30 = ` +const ( + shiftbytes_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -167,7 +166,7 @@ BB0_4: ` - shiftbytes_ptx_35 = ` + shiftbytes_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -245,7 +244,7 @@ BB0_4: ` - shiftbytes_ptx_37 = ` + shiftbytes_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -323,7 +322,7 @@ BB0_4: ` - shiftbytes_ptx_50 = ` + shiftbytes_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -401,7 +400,7 @@ BB0_4: ` - shiftbytes_ptx_52 = ` + shiftbytes_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -479,7 +478,7 @@ BB0_4: ` - shiftbytes_ptx_53 = ` + shiftbytes_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -557,7 +556,7 @@ BB0_4: ` - shiftbytes_ptx_60 = ` + shiftbytes_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -635,7 +634,7 @@ BB0_4: ` - shiftbytes_ptx_61 = ` + shiftbytes_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -713,7 +712,7 @@ BB0_4: ` - shiftbytes_ptx_70 = ` + shiftbytes_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -791,7 +790,7 @@ BB0_4: ` - shiftbytes_ptx_75 = ` + shiftbytes_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -869,4 +868,4 @@ BB0_4: ` - ) +) diff --git a/cuda/shiftbytesy_wrapper.go b/cuda/shiftbytesy_wrapper.go index 20f839418..358c0268a 100644 --- a/cuda/shiftbytesy_wrapper.go +++ b/cuda/shiftbytesy_wrapper.go @@ -5,46 +5,46 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for shiftbytesy kernel var shiftbytesy_code cu.Function // Stores the arguments for shiftbytesy kernel invocation -type shiftbytesy_args_t struct{ - arg_dst unsafe.Pointer - arg_src unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - arg_shy int - arg_clamp byte - argptr [7]unsafe.Pointer +type shiftbytesy_args_t struct { + arg_dst unsafe.Pointer + arg_src unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + arg_shy int + arg_clamp byte + argptr [7]unsafe.Pointer sync.Mutex } // Stores the arguments for shiftbytesy kernel invocation var shiftbytesy_args shiftbytesy_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - shiftbytesy_args.argptr[0] = unsafe.Pointer(&shiftbytesy_args.arg_dst) - shiftbytesy_args.argptr[1] = unsafe.Pointer(&shiftbytesy_args.arg_src) - shiftbytesy_args.argptr[2] = unsafe.Pointer(&shiftbytesy_args.arg_Nx) - shiftbytesy_args.argptr[3] = unsafe.Pointer(&shiftbytesy_args.arg_Ny) - shiftbytesy_args.argptr[4] = unsafe.Pointer(&shiftbytesy_args.arg_Nz) - shiftbytesy_args.argptr[5] = unsafe.Pointer(&shiftbytesy_args.arg_shy) - shiftbytesy_args.argptr[6] = unsafe.Pointer(&shiftbytesy_args.arg_clamp) - } + shiftbytesy_args.argptr[0] = unsafe.Pointer(&shiftbytesy_args.arg_dst) + shiftbytesy_args.argptr[1] = unsafe.Pointer(&shiftbytesy_args.arg_src) + shiftbytesy_args.argptr[2] = unsafe.Pointer(&shiftbytesy_args.arg_Nx) + shiftbytesy_args.argptr[3] = unsafe.Pointer(&shiftbytesy_args.arg_Ny) + shiftbytesy_args.argptr[4] = unsafe.Pointer(&shiftbytesy_args.arg_Nz) + shiftbytesy_args.argptr[5] = unsafe.Pointer(&shiftbytesy_args.arg_shy) + shiftbytesy_args.argptr[6] = unsafe.Pointer(&shiftbytesy_args.arg_clamp) +} // Wrapper for shiftbytesy CUDA kernel, asynchronous. -func k_shiftbytesy_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shy int, clamp byte, cfg *config) { - if Synchronous{ // debug +func k_shiftbytesy_async(dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shy int, clamp byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("shiftbytesy") } @@ -52,44 +52,43 @@ func k_shiftbytesy_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny in shiftbytesy_args.Lock() defer shiftbytesy_args.Unlock() - if shiftbytesy_code == 0{ + if shiftbytesy_code == 0 { shiftbytesy_code = fatbinLoad(shiftbytesy_map, "shiftbytesy") } - shiftbytesy_args.arg_dst = dst - shiftbytesy_args.arg_src = src - shiftbytesy_args.arg_Nx = Nx - shiftbytesy_args.arg_Ny = Ny - shiftbytesy_args.arg_Nz = Nz - shiftbytesy_args.arg_shy = shy - shiftbytesy_args.arg_clamp = clamp - + shiftbytesy_args.arg_dst = dst + shiftbytesy_args.arg_src = src + shiftbytesy_args.arg_Nx = Nx + shiftbytesy_args.arg_Ny = Ny + shiftbytesy_args.arg_Nz = Nz + shiftbytesy_args.arg_shy = shy + shiftbytesy_args.arg_clamp = clamp args := shiftbytesy_args.argptr[:] cu.LaunchKernel(shiftbytesy_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("shiftbytesy") } } // maps compute capability on PTX code for shiftbytesy kernel. -var shiftbytesy_map = map[int]string{ 0: "" , -30: shiftbytesy_ptx_30 , -35: shiftbytesy_ptx_35 , -37: shiftbytesy_ptx_37 , -50: shiftbytesy_ptx_50 , -52: shiftbytesy_ptx_52 , -53: shiftbytesy_ptx_53 , -60: shiftbytesy_ptx_60 , -61: shiftbytesy_ptx_61 , -70: shiftbytesy_ptx_70 , -75: shiftbytesy_ptx_75 } +var shiftbytesy_map = map[int]string{0: "", + 30: shiftbytesy_ptx_30, + 35: shiftbytesy_ptx_35, + 37: shiftbytesy_ptx_37, + 50: shiftbytesy_ptx_50, + 52: shiftbytesy_ptx_52, + 53: shiftbytesy_ptx_53, + 60: shiftbytesy_ptx_60, + 61: shiftbytesy_ptx_61, + 70: shiftbytesy_ptx_70, + 75: shiftbytesy_ptx_75} // shiftbytesy PTX code for various compute capabilities. -const( - shiftbytesy_ptx_30 = ` +const ( + shiftbytesy_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -168,7 +167,7 @@ BB0_4: ` - shiftbytesy_ptx_35 = ` + shiftbytesy_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -247,7 +246,7 @@ BB0_4: ` - shiftbytesy_ptx_37 = ` + shiftbytesy_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -326,7 +325,7 @@ BB0_4: ` - shiftbytesy_ptx_50 = ` + shiftbytesy_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -405,7 +404,7 @@ BB0_4: ` - shiftbytesy_ptx_52 = ` + shiftbytesy_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -484,7 +483,7 @@ BB0_4: ` - shiftbytesy_ptx_53 = ` + shiftbytesy_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -563,7 +562,7 @@ BB0_4: ` - shiftbytesy_ptx_60 = ` + shiftbytesy_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -642,7 +641,7 @@ BB0_4: ` - shiftbytesy_ptx_61 = ` + shiftbytesy_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -721,7 +720,7 @@ BB0_4: ` - shiftbytesy_ptx_70 = ` + shiftbytesy_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -800,7 +799,7 @@ BB0_4: ` - shiftbytesy_ptx_75 = ` + shiftbytesy_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -879,4 +878,4 @@ BB0_4: ` - ) +) diff --git a/cuda/shiftx_wrapper.go b/cuda/shiftx_wrapper.go index f7b15bbda..81fefc439 100644 --- a/cuda/shiftx_wrapper.go +++ b/cuda/shiftx_wrapper.go @@ -5,48 +5,48 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for shiftx kernel var shiftx_code cu.Function // Stores the arguments for shiftx kernel invocation -type shiftx_args_t struct{ - arg_dst unsafe.Pointer - arg_src unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - arg_shx int - arg_clampL float32 - arg_clampR float32 - argptr [8]unsafe.Pointer +type shiftx_args_t struct { + arg_dst unsafe.Pointer + arg_src unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + arg_shx int + arg_clampL float32 + arg_clampR float32 + argptr [8]unsafe.Pointer sync.Mutex } // Stores the arguments for shiftx kernel invocation var shiftx_args shiftx_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - shiftx_args.argptr[0] = unsafe.Pointer(&shiftx_args.arg_dst) - shiftx_args.argptr[1] = unsafe.Pointer(&shiftx_args.arg_src) - shiftx_args.argptr[2] = unsafe.Pointer(&shiftx_args.arg_Nx) - shiftx_args.argptr[3] = unsafe.Pointer(&shiftx_args.arg_Ny) - shiftx_args.argptr[4] = unsafe.Pointer(&shiftx_args.arg_Nz) - shiftx_args.argptr[5] = unsafe.Pointer(&shiftx_args.arg_shx) - shiftx_args.argptr[6] = unsafe.Pointer(&shiftx_args.arg_clampL) - shiftx_args.argptr[7] = unsafe.Pointer(&shiftx_args.arg_clampR) - } + shiftx_args.argptr[0] = unsafe.Pointer(&shiftx_args.arg_dst) + shiftx_args.argptr[1] = unsafe.Pointer(&shiftx_args.arg_src) + shiftx_args.argptr[2] = unsafe.Pointer(&shiftx_args.arg_Nx) + shiftx_args.argptr[3] = unsafe.Pointer(&shiftx_args.arg_Ny) + shiftx_args.argptr[4] = unsafe.Pointer(&shiftx_args.arg_Nz) + shiftx_args.argptr[5] = unsafe.Pointer(&shiftx_args.arg_shx) + shiftx_args.argptr[6] = unsafe.Pointer(&shiftx_args.arg_clampL) + shiftx_args.argptr[7] = unsafe.Pointer(&shiftx_args.arg_clampR) +} // Wrapper for shiftx CUDA kernel, asynchronous. -func k_shiftx_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shx int, clampL float32, clampR float32, cfg *config) { - if Synchronous{ // debug +func k_shiftx_async(dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shx int, clampL float32, clampR float32, cfg *config) { + if Synchronous { // debug Sync() timer.Start("shiftx") } @@ -54,45 +54,44 @@ func k_shiftx_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz shiftx_args.Lock() defer shiftx_args.Unlock() - if shiftx_code == 0{ + if shiftx_code == 0 { shiftx_code = fatbinLoad(shiftx_map, "shiftx") } - shiftx_args.arg_dst = dst - shiftx_args.arg_src = src - shiftx_args.arg_Nx = Nx - shiftx_args.arg_Ny = Ny - shiftx_args.arg_Nz = Nz - shiftx_args.arg_shx = shx - shiftx_args.arg_clampL = clampL - shiftx_args.arg_clampR = clampR - + shiftx_args.arg_dst = dst + shiftx_args.arg_src = src + shiftx_args.arg_Nx = Nx + shiftx_args.arg_Ny = Ny + shiftx_args.arg_Nz = Nz + shiftx_args.arg_shx = shx + shiftx_args.arg_clampL = clampL + shiftx_args.arg_clampR = clampR args := shiftx_args.argptr[:] cu.LaunchKernel(shiftx_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("shiftx") } } // maps compute capability on PTX code for shiftx kernel. -var shiftx_map = map[int]string{ 0: "" , -30: shiftx_ptx_30 , -35: shiftx_ptx_35 , -37: shiftx_ptx_37 , -50: shiftx_ptx_50 , -52: shiftx_ptx_52 , -53: shiftx_ptx_53 , -60: shiftx_ptx_60 , -61: shiftx_ptx_61 , -70: shiftx_ptx_70 , -75: shiftx_ptx_75 } +var shiftx_map = map[int]string{0: "", + 30: shiftx_ptx_30, + 35: shiftx_ptx_35, + 37: shiftx_ptx_37, + 50: shiftx_ptx_50, + 52: shiftx_ptx_52, + 53: shiftx_ptx_53, + 60: shiftx_ptx_60, + 61: shiftx_ptx_61, + 70: shiftx_ptx_70, + 75: shiftx_ptx_75} // shiftx PTX code for various compute capabilities. -const( - shiftx_ptx_30 = ` +const ( + shiftx_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -174,7 +173,7 @@ BB0_5: ` - shiftx_ptx_35 = ` + shiftx_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -256,7 +255,7 @@ BB0_5: ` - shiftx_ptx_37 = ` + shiftx_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -338,7 +337,7 @@ BB0_5: ` - shiftx_ptx_50 = ` + shiftx_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -420,7 +419,7 @@ BB0_5: ` - shiftx_ptx_52 = ` + shiftx_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -502,7 +501,7 @@ BB0_5: ` - shiftx_ptx_53 = ` + shiftx_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -584,7 +583,7 @@ BB0_5: ` - shiftx_ptx_60 = ` + shiftx_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -666,7 +665,7 @@ BB0_5: ` - shiftx_ptx_61 = ` + shiftx_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -748,7 +747,7 @@ BB0_5: ` - shiftx_ptx_70 = ` + shiftx_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -830,7 +829,7 @@ BB0_5: ` - shiftx_ptx_75 = ` + shiftx_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -912,4 +911,4 @@ BB0_5: ` - ) +) diff --git a/cuda/shifty_wrapper.go b/cuda/shifty_wrapper.go index 717d8d8ab..69454058a 100644 --- a/cuda/shifty_wrapper.go +++ b/cuda/shifty_wrapper.go @@ -5,48 +5,48 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for shifty kernel var shifty_code cu.Function // Stores the arguments for shifty kernel invocation -type shifty_args_t struct{ - arg_dst unsafe.Pointer - arg_src unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - arg_shy int - arg_clampL float32 - arg_clampR float32 - argptr [8]unsafe.Pointer +type shifty_args_t struct { + arg_dst unsafe.Pointer + arg_src unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + arg_shy int + arg_clampL float32 + arg_clampR float32 + argptr [8]unsafe.Pointer sync.Mutex } // Stores the arguments for shifty kernel invocation var shifty_args shifty_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - shifty_args.argptr[0] = unsafe.Pointer(&shifty_args.arg_dst) - shifty_args.argptr[1] = unsafe.Pointer(&shifty_args.arg_src) - shifty_args.argptr[2] = unsafe.Pointer(&shifty_args.arg_Nx) - shifty_args.argptr[3] = unsafe.Pointer(&shifty_args.arg_Ny) - shifty_args.argptr[4] = unsafe.Pointer(&shifty_args.arg_Nz) - shifty_args.argptr[5] = unsafe.Pointer(&shifty_args.arg_shy) - shifty_args.argptr[6] = unsafe.Pointer(&shifty_args.arg_clampL) - shifty_args.argptr[7] = unsafe.Pointer(&shifty_args.arg_clampR) - } + shifty_args.argptr[0] = unsafe.Pointer(&shifty_args.arg_dst) + shifty_args.argptr[1] = unsafe.Pointer(&shifty_args.arg_src) + shifty_args.argptr[2] = unsafe.Pointer(&shifty_args.arg_Nx) + shifty_args.argptr[3] = unsafe.Pointer(&shifty_args.arg_Ny) + shifty_args.argptr[4] = unsafe.Pointer(&shifty_args.arg_Nz) + shifty_args.argptr[5] = unsafe.Pointer(&shifty_args.arg_shy) + shifty_args.argptr[6] = unsafe.Pointer(&shifty_args.arg_clampL) + shifty_args.argptr[7] = unsafe.Pointer(&shifty_args.arg_clampR) +} // Wrapper for shifty CUDA kernel, asynchronous. -func k_shifty_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shy int, clampL float32, clampR float32, cfg *config) { - if Synchronous{ // debug +func k_shifty_async(dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shy int, clampL float32, clampR float32, cfg *config) { + if Synchronous { // debug Sync() timer.Start("shifty") } @@ -54,45 +54,44 @@ func k_shifty_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz shifty_args.Lock() defer shifty_args.Unlock() - if shifty_code == 0{ + if shifty_code == 0 { shifty_code = fatbinLoad(shifty_map, "shifty") } - shifty_args.arg_dst = dst - shifty_args.arg_src = src - shifty_args.arg_Nx = Nx - shifty_args.arg_Ny = Ny - shifty_args.arg_Nz = Nz - shifty_args.arg_shy = shy - shifty_args.arg_clampL = clampL - shifty_args.arg_clampR = clampR - + shifty_args.arg_dst = dst + shifty_args.arg_src = src + shifty_args.arg_Nx = Nx + shifty_args.arg_Ny = Ny + shifty_args.arg_Nz = Nz + shifty_args.arg_shy = shy + shifty_args.arg_clampL = clampL + shifty_args.arg_clampR = clampR args := shifty_args.argptr[:] cu.LaunchKernel(shifty_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("shifty") } } // maps compute capability on PTX code for shifty kernel. -var shifty_map = map[int]string{ 0: "" , -30: shifty_ptx_30 , -35: shifty_ptx_35 , -37: shifty_ptx_37 , -50: shifty_ptx_50 , -52: shifty_ptx_52 , -53: shifty_ptx_53 , -60: shifty_ptx_60 , -61: shifty_ptx_61 , -70: shifty_ptx_70 , -75: shifty_ptx_75 } +var shifty_map = map[int]string{0: "", + 30: shifty_ptx_30, + 35: shifty_ptx_35, + 37: shifty_ptx_37, + 50: shifty_ptx_50, + 52: shifty_ptx_52, + 53: shifty_ptx_53, + 60: shifty_ptx_60, + 61: shifty_ptx_61, + 70: shifty_ptx_70, + 75: shifty_ptx_75} // shifty PTX code for various compute capabilities. -const( - shifty_ptx_30 = ` +const ( + shifty_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -174,7 +173,7 @@ BB0_5: ` - shifty_ptx_35 = ` + shifty_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -256,7 +255,7 @@ BB0_5: ` - shifty_ptx_37 = ` + shifty_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -338,7 +337,7 @@ BB0_5: ` - shifty_ptx_50 = ` + shifty_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -420,7 +419,7 @@ BB0_5: ` - shifty_ptx_52 = ` + shifty_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -502,7 +501,7 @@ BB0_5: ` - shifty_ptx_53 = ` + shifty_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -584,7 +583,7 @@ BB0_5: ` - shifty_ptx_60 = ` + shifty_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -666,7 +665,7 @@ BB0_5: ` - shifty_ptx_61 = ` + shifty_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -748,7 +747,7 @@ BB0_5: ` - shifty_ptx_70 = ` + shifty_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -830,7 +829,7 @@ BB0_5: ` - shifty_ptx_75 = ` + shifty_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -912,4 +911,4 @@ BB0_5: ` - ) +) diff --git a/cuda/shiftz_wrapper.go b/cuda/shiftz_wrapper.go index 43424b31a..51c307c42 100644 --- a/cuda/shiftz_wrapper.go +++ b/cuda/shiftz_wrapper.go @@ -5,48 +5,48 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for shiftz kernel var shiftz_code cu.Function // Stores the arguments for shiftz kernel invocation -type shiftz_args_t struct{ - arg_dst unsafe.Pointer - arg_src unsafe.Pointer - arg_Nx int - arg_Ny int - arg_Nz int - arg_shz int - arg_clampL float32 - arg_clampR float32 - argptr [8]unsafe.Pointer +type shiftz_args_t struct { + arg_dst unsafe.Pointer + arg_src unsafe.Pointer + arg_Nx int + arg_Ny int + arg_Nz int + arg_shz int + arg_clampL float32 + arg_clampR float32 + argptr [8]unsafe.Pointer sync.Mutex } // Stores the arguments for shiftz kernel invocation var shiftz_args shiftz_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - shiftz_args.argptr[0] = unsafe.Pointer(&shiftz_args.arg_dst) - shiftz_args.argptr[1] = unsafe.Pointer(&shiftz_args.arg_src) - shiftz_args.argptr[2] = unsafe.Pointer(&shiftz_args.arg_Nx) - shiftz_args.argptr[3] = unsafe.Pointer(&shiftz_args.arg_Ny) - shiftz_args.argptr[4] = unsafe.Pointer(&shiftz_args.arg_Nz) - shiftz_args.argptr[5] = unsafe.Pointer(&shiftz_args.arg_shz) - shiftz_args.argptr[6] = unsafe.Pointer(&shiftz_args.arg_clampL) - shiftz_args.argptr[7] = unsafe.Pointer(&shiftz_args.arg_clampR) - } + shiftz_args.argptr[0] = unsafe.Pointer(&shiftz_args.arg_dst) + shiftz_args.argptr[1] = unsafe.Pointer(&shiftz_args.arg_src) + shiftz_args.argptr[2] = unsafe.Pointer(&shiftz_args.arg_Nx) + shiftz_args.argptr[3] = unsafe.Pointer(&shiftz_args.arg_Ny) + shiftz_args.argptr[4] = unsafe.Pointer(&shiftz_args.arg_Nz) + shiftz_args.argptr[5] = unsafe.Pointer(&shiftz_args.arg_shz) + shiftz_args.argptr[6] = unsafe.Pointer(&shiftz_args.arg_clampL) + shiftz_args.argptr[7] = unsafe.Pointer(&shiftz_args.arg_clampR) +} // Wrapper for shiftz CUDA kernel, asynchronous. -func k_shiftz_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shz int, clampL float32, clampR float32, cfg *config) { - if Synchronous{ // debug +func k_shiftz_async(dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz int, shz int, clampL float32, clampR float32, cfg *config) { + if Synchronous { // debug Sync() timer.Start("shiftz") } @@ -54,45 +54,44 @@ func k_shiftz_async ( dst unsafe.Pointer, src unsafe.Pointer, Nx int, Ny int, Nz shiftz_args.Lock() defer shiftz_args.Unlock() - if shiftz_code == 0{ + if shiftz_code == 0 { shiftz_code = fatbinLoad(shiftz_map, "shiftz") } - shiftz_args.arg_dst = dst - shiftz_args.arg_src = src - shiftz_args.arg_Nx = Nx - shiftz_args.arg_Ny = Ny - shiftz_args.arg_Nz = Nz - shiftz_args.arg_shz = shz - shiftz_args.arg_clampL = clampL - shiftz_args.arg_clampR = clampR - + shiftz_args.arg_dst = dst + shiftz_args.arg_src = src + shiftz_args.arg_Nx = Nx + shiftz_args.arg_Ny = Ny + shiftz_args.arg_Nz = Nz + shiftz_args.arg_shz = shz + shiftz_args.arg_clampL = clampL + shiftz_args.arg_clampR = clampR args := shiftz_args.argptr[:] cu.LaunchKernel(shiftz_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("shiftz") } } // maps compute capability on PTX code for shiftz kernel. -var shiftz_map = map[int]string{ 0: "" , -30: shiftz_ptx_30 , -35: shiftz_ptx_35 , -37: shiftz_ptx_37 , -50: shiftz_ptx_50 , -52: shiftz_ptx_52 , -53: shiftz_ptx_53 , -60: shiftz_ptx_60 , -61: shiftz_ptx_61 , -70: shiftz_ptx_70 , -75: shiftz_ptx_75 } +var shiftz_map = map[int]string{0: "", + 30: shiftz_ptx_30, + 35: shiftz_ptx_35, + 37: shiftz_ptx_37, + 50: shiftz_ptx_50, + 52: shiftz_ptx_52, + 53: shiftz_ptx_53, + 60: shiftz_ptx_60, + 61: shiftz_ptx_61, + 70: shiftz_ptx_70, + 75: shiftz_ptx_75} // shiftz PTX code for various compute capabilities. -const( - shiftz_ptx_30 = ` +const ( + shiftz_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -174,7 +173,7 @@ BB0_5: ` - shiftz_ptx_35 = ` + shiftz_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -256,7 +255,7 @@ BB0_5: ` - shiftz_ptx_37 = ` + shiftz_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -338,7 +337,7 @@ BB0_5: ` - shiftz_ptx_50 = ` + shiftz_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -420,7 +419,7 @@ BB0_5: ` - shiftz_ptx_52 = ` + shiftz_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -502,7 +501,7 @@ BB0_5: ` - shiftz_ptx_53 = ` + shiftz_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -584,7 +583,7 @@ BB0_5: ` - shiftz_ptx_60 = ` + shiftz_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -666,7 +665,7 @@ BB0_5: ` - shiftz_ptx_61 = ` + shiftz_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -748,7 +747,7 @@ BB0_5: ` - shiftz_ptx_70 = ` + shiftz_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -830,7 +829,7 @@ BB0_5: ` - shiftz_ptx_75 = ` + shiftz_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -912,4 +911,4 @@ BB0_5: ` - ) +) diff --git a/cuda/slonczewski2_wrapper.go b/cuda/slonczewski2_wrapper.go index bd5d3c516..22136d13b 100644 --- a/cuda/slonczewski2_wrapper.go +++ b/cuda/slonczewski2_wrapper.go @@ -5,86 +5,86 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for addslonczewskitorque2 kernel var addslonczewskitorque2_code cu.Function // Stores the arguments for addslonczewskitorque2 kernel invocation -type addslonczewskitorque2_args_t struct{ - arg_tx unsafe.Pointer - arg_ty unsafe.Pointer - arg_tz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_jz_ unsafe.Pointer - arg_jz_mul float32 - arg_px_ unsafe.Pointer - arg_px_mul float32 - arg_py_ unsafe.Pointer - arg_py_mul float32 - arg_pz_ unsafe.Pointer - arg_pz_mul float32 - arg_alpha_ unsafe.Pointer - arg_alpha_mul float32 - arg_pol_ unsafe.Pointer - arg_pol_mul float32 - arg_lambda_ unsafe.Pointer - arg_lambda_mul float32 - arg_epsPrime_ unsafe.Pointer - arg_epsPrime_mul float32 - arg_flt_ unsafe.Pointer - arg_flt_mul float32 - arg_N int - argptr [27]unsafe.Pointer +type addslonczewskitorque2_args_t struct { + arg_tx unsafe.Pointer + arg_ty unsafe.Pointer + arg_tz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_jz_ unsafe.Pointer + arg_jz_mul float32 + arg_px_ unsafe.Pointer + arg_px_mul float32 + arg_py_ unsafe.Pointer + arg_py_mul float32 + arg_pz_ unsafe.Pointer + arg_pz_mul float32 + arg_alpha_ unsafe.Pointer + arg_alpha_mul float32 + arg_pol_ unsafe.Pointer + arg_pol_mul float32 + arg_lambda_ unsafe.Pointer + arg_lambda_mul float32 + arg_epsPrime_ unsafe.Pointer + arg_epsPrime_mul float32 + arg_flt_ unsafe.Pointer + arg_flt_mul float32 + arg_N int + argptr [27]unsafe.Pointer sync.Mutex } // Stores the arguments for addslonczewskitorque2 kernel invocation var addslonczewskitorque2_args addslonczewskitorque2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - addslonczewskitorque2_args.argptr[0] = unsafe.Pointer(&addslonczewskitorque2_args.arg_tx) - addslonczewskitorque2_args.argptr[1] = unsafe.Pointer(&addslonczewskitorque2_args.arg_ty) - addslonczewskitorque2_args.argptr[2] = unsafe.Pointer(&addslonczewskitorque2_args.arg_tz) - addslonczewskitorque2_args.argptr[3] = unsafe.Pointer(&addslonczewskitorque2_args.arg_mx) - addslonczewskitorque2_args.argptr[4] = unsafe.Pointer(&addslonczewskitorque2_args.arg_my) - addslonczewskitorque2_args.argptr[5] = unsafe.Pointer(&addslonczewskitorque2_args.arg_mz) - addslonczewskitorque2_args.argptr[6] = unsafe.Pointer(&addslonczewskitorque2_args.arg_Ms_) - addslonczewskitorque2_args.argptr[7] = unsafe.Pointer(&addslonczewskitorque2_args.arg_Ms_mul) - addslonczewskitorque2_args.argptr[8] = unsafe.Pointer(&addslonczewskitorque2_args.arg_jz_) - addslonczewskitorque2_args.argptr[9] = unsafe.Pointer(&addslonczewskitorque2_args.arg_jz_mul) - addslonczewskitorque2_args.argptr[10] = unsafe.Pointer(&addslonczewskitorque2_args.arg_px_) - addslonczewskitorque2_args.argptr[11] = unsafe.Pointer(&addslonczewskitorque2_args.arg_px_mul) - addslonczewskitorque2_args.argptr[12] = unsafe.Pointer(&addslonczewskitorque2_args.arg_py_) - addslonczewskitorque2_args.argptr[13] = unsafe.Pointer(&addslonczewskitorque2_args.arg_py_mul) - addslonczewskitorque2_args.argptr[14] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pz_) - addslonczewskitorque2_args.argptr[15] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pz_mul) - addslonczewskitorque2_args.argptr[16] = unsafe.Pointer(&addslonczewskitorque2_args.arg_alpha_) - addslonczewskitorque2_args.argptr[17] = unsafe.Pointer(&addslonczewskitorque2_args.arg_alpha_mul) - addslonczewskitorque2_args.argptr[18] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pol_) - addslonczewskitorque2_args.argptr[19] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pol_mul) - addslonczewskitorque2_args.argptr[20] = unsafe.Pointer(&addslonczewskitorque2_args.arg_lambda_) - addslonczewskitorque2_args.argptr[21] = unsafe.Pointer(&addslonczewskitorque2_args.arg_lambda_mul) - addslonczewskitorque2_args.argptr[22] = unsafe.Pointer(&addslonczewskitorque2_args.arg_epsPrime_) - addslonczewskitorque2_args.argptr[23] = unsafe.Pointer(&addslonczewskitorque2_args.arg_epsPrime_mul) - addslonczewskitorque2_args.argptr[24] = unsafe.Pointer(&addslonczewskitorque2_args.arg_flt_) - addslonczewskitorque2_args.argptr[25] = unsafe.Pointer(&addslonczewskitorque2_args.arg_flt_mul) - addslonczewskitorque2_args.argptr[26] = unsafe.Pointer(&addslonczewskitorque2_args.arg_N) - } + addslonczewskitorque2_args.argptr[0] = unsafe.Pointer(&addslonczewskitorque2_args.arg_tx) + addslonczewskitorque2_args.argptr[1] = unsafe.Pointer(&addslonczewskitorque2_args.arg_ty) + addslonczewskitorque2_args.argptr[2] = unsafe.Pointer(&addslonczewskitorque2_args.arg_tz) + addslonczewskitorque2_args.argptr[3] = unsafe.Pointer(&addslonczewskitorque2_args.arg_mx) + addslonczewskitorque2_args.argptr[4] = unsafe.Pointer(&addslonczewskitorque2_args.arg_my) + addslonczewskitorque2_args.argptr[5] = unsafe.Pointer(&addslonczewskitorque2_args.arg_mz) + addslonczewskitorque2_args.argptr[6] = unsafe.Pointer(&addslonczewskitorque2_args.arg_Ms_) + addslonczewskitorque2_args.argptr[7] = unsafe.Pointer(&addslonczewskitorque2_args.arg_Ms_mul) + addslonczewskitorque2_args.argptr[8] = unsafe.Pointer(&addslonczewskitorque2_args.arg_jz_) + addslonczewskitorque2_args.argptr[9] = unsafe.Pointer(&addslonczewskitorque2_args.arg_jz_mul) + addslonczewskitorque2_args.argptr[10] = unsafe.Pointer(&addslonczewskitorque2_args.arg_px_) + addslonczewskitorque2_args.argptr[11] = unsafe.Pointer(&addslonczewskitorque2_args.arg_px_mul) + addslonczewskitorque2_args.argptr[12] = unsafe.Pointer(&addslonczewskitorque2_args.arg_py_) + addslonczewskitorque2_args.argptr[13] = unsafe.Pointer(&addslonczewskitorque2_args.arg_py_mul) + addslonczewskitorque2_args.argptr[14] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pz_) + addslonczewskitorque2_args.argptr[15] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pz_mul) + addslonczewskitorque2_args.argptr[16] = unsafe.Pointer(&addslonczewskitorque2_args.arg_alpha_) + addslonczewskitorque2_args.argptr[17] = unsafe.Pointer(&addslonczewskitorque2_args.arg_alpha_mul) + addslonczewskitorque2_args.argptr[18] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pol_) + addslonczewskitorque2_args.argptr[19] = unsafe.Pointer(&addslonczewskitorque2_args.arg_pol_mul) + addslonczewskitorque2_args.argptr[20] = unsafe.Pointer(&addslonczewskitorque2_args.arg_lambda_) + addslonczewskitorque2_args.argptr[21] = unsafe.Pointer(&addslonczewskitorque2_args.arg_lambda_mul) + addslonczewskitorque2_args.argptr[22] = unsafe.Pointer(&addslonczewskitorque2_args.arg_epsPrime_) + addslonczewskitorque2_args.argptr[23] = unsafe.Pointer(&addslonczewskitorque2_args.arg_epsPrime_mul) + addslonczewskitorque2_args.argptr[24] = unsafe.Pointer(&addslonczewskitorque2_args.arg_flt_) + addslonczewskitorque2_args.argptr[25] = unsafe.Pointer(&addslonczewskitorque2_args.arg_flt_mul) + addslonczewskitorque2_args.argptr[26] = unsafe.Pointer(&addslonczewskitorque2_args.arg_N) +} // Wrapper for addslonczewskitorque2 CUDA kernel, asynchronous. -func k_addslonczewskitorque2_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, jz_ unsafe.Pointer, jz_mul float32, px_ unsafe.Pointer, px_mul float32, py_ unsafe.Pointer, py_mul float32, pz_ unsafe.Pointer, pz_mul float32, alpha_ unsafe.Pointer, alpha_mul float32, pol_ unsafe.Pointer, pol_mul float32, lambda_ unsafe.Pointer, lambda_mul float32, epsPrime_ unsafe.Pointer, epsPrime_mul float32, flt_ unsafe.Pointer, flt_mul float32, N int, cfg *config) { - if Synchronous{ // debug +func k_addslonczewskitorque2_async(tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, jz_ unsafe.Pointer, jz_mul float32, px_ unsafe.Pointer, px_mul float32, py_ unsafe.Pointer, py_mul float32, pz_ unsafe.Pointer, pz_mul float32, alpha_ unsafe.Pointer, alpha_mul float32, pol_ unsafe.Pointer, pol_mul float32, lambda_ unsafe.Pointer, lambda_mul float32, epsPrime_ unsafe.Pointer, epsPrime_mul float32, flt_ unsafe.Pointer, flt_mul float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("addslonczewskitorque2") } @@ -92,64 +92,63 @@ func k_addslonczewskitorque2_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz un addslonczewskitorque2_args.Lock() defer addslonczewskitorque2_args.Unlock() - if addslonczewskitorque2_code == 0{ + if addslonczewskitorque2_code == 0 { addslonczewskitorque2_code = fatbinLoad(addslonczewskitorque2_map, "addslonczewskitorque2") } - addslonczewskitorque2_args.arg_tx = tx - addslonczewskitorque2_args.arg_ty = ty - addslonczewskitorque2_args.arg_tz = tz - addslonczewskitorque2_args.arg_mx = mx - addslonczewskitorque2_args.arg_my = my - addslonczewskitorque2_args.arg_mz = mz - addslonczewskitorque2_args.arg_Ms_ = Ms_ - addslonczewskitorque2_args.arg_Ms_mul = Ms_mul - addslonczewskitorque2_args.arg_jz_ = jz_ - addslonczewskitorque2_args.arg_jz_mul = jz_mul - addslonczewskitorque2_args.arg_px_ = px_ - addslonczewskitorque2_args.arg_px_mul = px_mul - addslonczewskitorque2_args.arg_py_ = py_ - addslonczewskitorque2_args.arg_py_mul = py_mul - addslonczewskitorque2_args.arg_pz_ = pz_ - addslonczewskitorque2_args.arg_pz_mul = pz_mul - addslonczewskitorque2_args.arg_alpha_ = alpha_ - addslonczewskitorque2_args.arg_alpha_mul = alpha_mul - addslonczewskitorque2_args.arg_pol_ = pol_ - addslonczewskitorque2_args.arg_pol_mul = pol_mul - addslonczewskitorque2_args.arg_lambda_ = lambda_ - addslonczewskitorque2_args.arg_lambda_mul = lambda_mul - addslonczewskitorque2_args.arg_epsPrime_ = epsPrime_ - addslonczewskitorque2_args.arg_epsPrime_mul = epsPrime_mul - addslonczewskitorque2_args.arg_flt_ = flt_ - addslonczewskitorque2_args.arg_flt_mul = flt_mul - addslonczewskitorque2_args.arg_N = N - + addslonczewskitorque2_args.arg_tx = tx + addslonczewskitorque2_args.arg_ty = ty + addslonczewskitorque2_args.arg_tz = tz + addslonczewskitorque2_args.arg_mx = mx + addslonczewskitorque2_args.arg_my = my + addslonczewskitorque2_args.arg_mz = mz + addslonczewskitorque2_args.arg_Ms_ = Ms_ + addslonczewskitorque2_args.arg_Ms_mul = Ms_mul + addslonczewskitorque2_args.arg_jz_ = jz_ + addslonczewskitorque2_args.arg_jz_mul = jz_mul + addslonczewskitorque2_args.arg_px_ = px_ + addslonczewskitorque2_args.arg_px_mul = px_mul + addslonczewskitorque2_args.arg_py_ = py_ + addslonczewskitorque2_args.arg_py_mul = py_mul + addslonczewskitorque2_args.arg_pz_ = pz_ + addslonczewskitorque2_args.arg_pz_mul = pz_mul + addslonczewskitorque2_args.arg_alpha_ = alpha_ + addslonczewskitorque2_args.arg_alpha_mul = alpha_mul + addslonczewskitorque2_args.arg_pol_ = pol_ + addslonczewskitorque2_args.arg_pol_mul = pol_mul + addslonczewskitorque2_args.arg_lambda_ = lambda_ + addslonczewskitorque2_args.arg_lambda_mul = lambda_mul + addslonczewskitorque2_args.arg_epsPrime_ = epsPrime_ + addslonczewskitorque2_args.arg_epsPrime_mul = epsPrime_mul + addslonczewskitorque2_args.arg_flt_ = flt_ + addslonczewskitorque2_args.arg_flt_mul = flt_mul + addslonczewskitorque2_args.arg_N = N args := addslonczewskitorque2_args.argptr[:] cu.LaunchKernel(addslonczewskitorque2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("addslonczewskitorque2") } } // maps compute capability on PTX code for addslonczewskitorque2 kernel. -var addslonczewskitorque2_map = map[int]string{ 0: "" , -30: addslonczewskitorque2_ptx_30 , -35: addslonczewskitorque2_ptx_35 , -37: addslonczewskitorque2_ptx_37 , -50: addslonczewskitorque2_ptx_50 , -52: addslonczewskitorque2_ptx_52 , -53: addslonczewskitorque2_ptx_53 , -60: addslonczewskitorque2_ptx_60 , -61: addslonczewskitorque2_ptx_61 , -70: addslonczewskitorque2_ptx_70 , -75: addslonczewskitorque2_ptx_75 } +var addslonczewskitorque2_map = map[int]string{0: "", + 30: addslonczewskitorque2_ptx_30, + 35: addslonczewskitorque2_ptx_35, + 37: addslonczewskitorque2_ptx_37, + 50: addslonczewskitorque2_ptx_50, + 52: addslonczewskitorque2_ptx_52, + 53: addslonczewskitorque2_ptx_53, + 60: addslonczewskitorque2_ptx_60, + 61: addslonczewskitorque2_ptx_61, + 70: addslonczewskitorque2_ptx_70, + 75: addslonczewskitorque2_ptx_75} // addslonczewskitorque2 PTX code for various compute capabilities. -const( - addslonczewskitorque2_ptx_30 = ` +const ( + addslonczewskitorque2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -418,7 +417,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_35 = ` + addslonczewskitorque2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -687,7 +686,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_37 = ` + addslonczewskitorque2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -956,7 +955,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_50 = ` + addslonczewskitorque2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -1225,7 +1224,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_52 = ` + addslonczewskitorque2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -1494,7 +1493,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_53 = ` + addslonczewskitorque2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -1763,7 +1762,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_60 = ` + addslonczewskitorque2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -2032,7 +2031,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_61 = ` + addslonczewskitorque2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -2301,7 +2300,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_70 = ` + addslonczewskitorque2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -2570,7 +2569,7 @@ BB0_25: ` - addslonczewskitorque2_ptx_75 = ` + addslonczewskitorque2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -2839,4 +2838,4 @@ BB0_25: ` - ) +) diff --git a/cuda/temperature2_wrapper.go b/cuda/temperature2_wrapper.go index bd6dc1d47..0671ad689 100644 --- a/cuda/temperature2_wrapper.go +++ b/cuda/temperature2_wrapper.go @@ -5,52 +5,52 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for settemperature2 kernel var settemperature2_code cu.Function // Stores the arguments for settemperature2 kernel invocation -type settemperature2_args_t struct{ - arg_B unsafe.Pointer - arg_noise unsafe.Pointer - arg_kB2_VgammaDt float32 - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_temp_ unsafe.Pointer - arg_temp_mul float32 - arg_alpha_ unsafe.Pointer - arg_alpha_mul float32 - arg_N int - argptr [10]unsafe.Pointer +type settemperature2_args_t struct { + arg_B unsafe.Pointer + arg_noise unsafe.Pointer + arg_kB2_VgammaDt float32 + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_temp_ unsafe.Pointer + arg_temp_mul float32 + arg_alpha_ unsafe.Pointer + arg_alpha_mul float32 + arg_N int + argptr [10]unsafe.Pointer sync.Mutex } // Stores the arguments for settemperature2 kernel invocation var settemperature2_args settemperature2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - settemperature2_args.argptr[0] = unsafe.Pointer(&settemperature2_args.arg_B) - settemperature2_args.argptr[1] = unsafe.Pointer(&settemperature2_args.arg_noise) - settemperature2_args.argptr[2] = unsafe.Pointer(&settemperature2_args.arg_kB2_VgammaDt) - settemperature2_args.argptr[3] = unsafe.Pointer(&settemperature2_args.arg_Ms_) - settemperature2_args.argptr[4] = unsafe.Pointer(&settemperature2_args.arg_Ms_mul) - settemperature2_args.argptr[5] = unsafe.Pointer(&settemperature2_args.arg_temp_) - settemperature2_args.argptr[6] = unsafe.Pointer(&settemperature2_args.arg_temp_mul) - settemperature2_args.argptr[7] = unsafe.Pointer(&settemperature2_args.arg_alpha_) - settemperature2_args.argptr[8] = unsafe.Pointer(&settemperature2_args.arg_alpha_mul) - settemperature2_args.argptr[9] = unsafe.Pointer(&settemperature2_args.arg_N) - } + settemperature2_args.argptr[0] = unsafe.Pointer(&settemperature2_args.arg_B) + settemperature2_args.argptr[1] = unsafe.Pointer(&settemperature2_args.arg_noise) + settemperature2_args.argptr[2] = unsafe.Pointer(&settemperature2_args.arg_kB2_VgammaDt) + settemperature2_args.argptr[3] = unsafe.Pointer(&settemperature2_args.arg_Ms_) + settemperature2_args.argptr[4] = unsafe.Pointer(&settemperature2_args.arg_Ms_mul) + settemperature2_args.argptr[5] = unsafe.Pointer(&settemperature2_args.arg_temp_) + settemperature2_args.argptr[6] = unsafe.Pointer(&settemperature2_args.arg_temp_mul) + settemperature2_args.argptr[7] = unsafe.Pointer(&settemperature2_args.arg_alpha_) + settemperature2_args.argptr[8] = unsafe.Pointer(&settemperature2_args.arg_alpha_mul) + settemperature2_args.argptr[9] = unsafe.Pointer(&settemperature2_args.arg_N) +} // Wrapper for settemperature2 CUDA kernel, asynchronous. -func k_settemperature2_async ( B unsafe.Pointer, noise unsafe.Pointer, kB2_VgammaDt float32, Ms_ unsafe.Pointer, Ms_mul float32, temp_ unsafe.Pointer, temp_mul float32, alpha_ unsafe.Pointer, alpha_mul float32, N int, cfg *config) { - if Synchronous{ // debug +func k_settemperature2_async(B unsafe.Pointer, noise unsafe.Pointer, kB2_VgammaDt float32, Ms_ unsafe.Pointer, Ms_mul float32, temp_ unsafe.Pointer, temp_mul float32, alpha_ unsafe.Pointer, alpha_mul float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("settemperature2") } @@ -58,47 +58,46 @@ func k_settemperature2_async ( B unsafe.Pointer, noise unsafe.Pointer, kB2_Vgamm settemperature2_args.Lock() defer settemperature2_args.Unlock() - if settemperature2_code == 0{ + if settemperature2_code == 0 { settemperature2_code = fatbinLoad(settemperature2_map, "settemperature2") } - settemperature2_args.arg_B = B - settemperature2_args.arg_noise = noise - settemperature2_args.arg_kB2_VgammaDt = kB2_VgammaDt - settemperature2_args.arg_Ms_ = Ms_ - settemperature2_args.arg_Ms_mul = Ms_mul - settemperature2_args.arg_temp_ = temp_ - settemperature2_args.arg_temp_mul = temp_mul - settemperature2_args.arg_alpha_ = alpha_ - settemperature2_args.arg_alpha_mul = alpha_mul - settemperature2_args.arg_N = N - + settemperature2_args.arg_B = B + settemperature2_args.arg_noise = noise + settemperature2_args.arg_kB2_VgammaDt = kB2_VgammaDt + settemperature2_args.arg_Ms_ = Ms_ + settemperature2_args.arg_Ms_mul = Ms_mul + settemperature2_args.arg_temp_ = temp_ + settemperature2_args.arg_temp_mul = temp_mul + settemperature2_args.arg_alpha_ = alpha_ + settemperature2_args.arg_alpha_mul = alpha_mul + settemperature2_args.arg_N = N args := settemperature2_args.argptr[:] cu.LaunchKernel(settemperature2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("settemperature2") } } // maps compute capability on PTX code for settemperature2 kernel. -var settemperature2_map = map[int]string{ 0: "" , -30: settemperature2_ptx_30 , -35: settemperature2_ptx_35 , -37: settemperature2_ptx_37 , -50: settemperature2_ptx_50 , -52: settemperature2_ptx_52 , -53: settemperature2_ptx_53 , -60: settemperature2_ptx_60 , -61: settemperature2_ptx_61 , -70: settemperature2_ptx_70 , -75: settemperature2_ptx_75 } +var settemperature2_map = map[int]string{0: "", + 30: settemperature2_ptx_30, + 35: settemperature2_ptx_35, + 37: settemperature2_ptx_37, + 50: settemperature2_ptx_50, + 52: settemperature2_ptx_52, + 53: settemperature2_ptx_53, + 60: settemperature2_ptx_60, + 61: settemperature2_ptx_61, + 70: settemperature2_ptx_70, + 75: settemperature2_ptx_75} // settemperature2 PTX code for various compute capabilities. -const( - settemperature2_ptx_30 = ` +const ( + settemperature2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -200,7 +199,7 @@ BB0_10: ` - settemperature2_ptx_35 = ` + settemperature2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -302,7 +301,7 @@ BB0_10: ` - settemperature2_ptx_37 = ` + settemperature2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -404,7 +403,7 @@ BB0_10: ` - settemperature2_ptx_50 = ` + settemperature2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -506,7 +505,7 @@ BB0_10: ` - settemperature2_ptx_52 = ` + settemperature2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -608,7 +607,7 @@ BB0_10: ` - settemperature2_ptx_53 = ` + settemperature2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -710,7 +709,7 @@ BB0_10: ` - settemperature2_ptx_60 = ` + settemperature2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -812,7 +811,7 @@ BB0_10: ` - settemperature2_ptx_61 = ` + settemperature2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -914,7 +913,7 @@ BB0_10: ` - settemperature2_ptx_70 = ` + settemperature2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1016,7 +1015,7 @@ BB0_10: ` - settemperature2_ptx_75 = ` + settemperature2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -1118,4 +1117,4 @@ BB0_10: ` - ) +) diff --git a/cuda/topologicalcharge_wrapper.go b/cuda/topologicalcharge_wrapper.go index 1dad5e453..e45b2d7b0 100644 --- a/cuda/topologicalcharge_wrapper.go +++ b/cuda/topologicalcharge_wrapper.go @@ -5,50 +5,50 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for settopologicalcharge kernel var settopologicalcharge_code cu.Function // Stores the arguments for settopologicalcharge kernel invocation -type settopologicalcharge_args_t struct{ - arg_s unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_icxcy float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [9]unsafe.Pointer +type settopologicalcharge_args_t struct { + arg_s unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_icxcy float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + argptr [9]unsafe.Pointer sync.Mutex } // Stores the arguments for settopologicalcharge kernel invocation var settopologicalcharge_args settopologicalcharge_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - settopologicalcharge_args.argptr[0] = unsafe.Pointer(&settopologicalcharge_args.arg_s) - settopologicalcharge_args.argptr[1] = unsafe.Pointer(&settopologicalcharge_args.arg_mx) - settopologicalcharge_args.argptr[2] = unsafe.Pointer(&settopologicalcharge_args.arg_my) - settopologicalcharge_args.argptr[3] = unsafe.Pointer(&settopologicalcharge_args.arg_mz) - settopologicalcharge_args.argptr[4] = unsafe.Pointer(&settopologicalcharge_args.arg_icxcy) - settopologicalcharge_args.argptr[5] = unsafe.Pointer(&settopologicalcharge_args.arg_Nx) - settopologicalcharge_args.argptr[6] = unsafe.Pointer(&settopologicalcharge_args.arg_Ny) - settopologicalcharge_args.argptr[7] = unsafe.Pointer(&settopologicalcharge_args.arg_Nz) - settopologicalcharge_args.argptr[8] = unsafe.Pointer(&settopologicalcharge_args.arg_PBC) - } + settopologicalcharge_args.argptr[0] = unsafe.Pointer(&settopologicalcharge_args.arg_s) + settopologicalcharge_args.argptr[1] = unsafe.Pointer(&settopologicalcharge_args.arg_mx) + settopologicalcharge_args.argptr[2] = unsafe.Pointer(&settopologicalcharge_args.arg_my) + settopologicalcharge_args.argptr[3] = unsafe.Pointer(&settopologicalcharge_args.arg_mz) + settopologicalcharge_args.argptr[4] = unsafe.Pointer(&settopologicalcharge_args.arg_icxcy) + settopologicalcharge_args.argptr[5] = unsafe.Pointer(&settopologicalcharge_args.arg_Nx) + settopologicalcharge_args.argptr[6] = unsafe.Pointer(&settopologicalcharge_args.arg_Ny) + settopologicalcharge_args.argptr[7] = unsafe.Pointer(&settopologicalcharge_args.arg_Nz) + settopologicalcharge_args.argptr[8] = unsafe.Pointer(&settopologicalcharge_args.arg_PBC) +} // Wrapper for settopologicalcharge CUDA kernel, asynchronous. -func k_settopologicalcharge_async ( s unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, icxcy float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_settopologicalcharge_async(s unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, icxcy float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("settopologicalcharge") } @@ -56,46 +56,45 @@ func k_settopologicalcharge_async ( s unsafe.Pointer, mx unsafe.Pointer, my unsa settopologicalcharge_args.Lock() defer settopologicalcharge_args.Unlock() - if settopologicalcharge_code == 0{ + if settopologicalcharge_code == 0 { settopologicalcharge_code = fatbinLoad(settopologicalcharge_map, "settopologicalcharge") } - settopologicalcharge_args.arg_s = s - settopologicalcharge_args.arg_mx = mx - settopologicalcharge_args.arg_my = my - settopologicalcharge_args.arg_mz = mz - settopologicalcharge_args.arg_icxcy = icxcy - settopologicalcharge_args.arg_Nx = Nx - settopologicalcharge_args.arg_Ny = Ny - settopologicalcharge_args.arg_Nz = Nz - settopologicalcharge_args.arg_PBC = PBC - + settopologicalcharge_args.arg_s = s + settopologicalcharge_args.arg_mx = mx + settopologicalcharge_args.arg_my = my + settopologicalcharge_args.arg_mz = mz + settopologicalcharge_args.arg_icxcy = icxcy + settopologicalcharge_args.arg_Nx = Nx + settopologicalcharge_args.arg_Ny = Ny + settopologicalcharge_args.arg_Nz = Nz + settopologicalcharge_args.arg_PBC = PBC args := settopologicalcharge_args.argptr[:] cu.LaunchKernel(settopologicalcharge_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("settopologicalcharge") } } // maps compute capability on PTX code for settopologicalcharge kernel. -var settopologicalcharge_map = map[int]string{ 0: "" , -30: settopologicalcharge_ptx_30 , -35: settopologicalcharge_ptx_35 , -37: settopologicalcharge_ptx_37 , -50: settopologicalcharge_ptx_50 , -52: settopologicalcharge_ptx_52 , -53: settopologicalcharge_ptx_53 , -60: settopologicalcharge_ptx_60 , -61: settopologicalcharge_ptx_61 , -70: settopologicalcharge_ptx_70 , -75: settopologicalcharge_ptx_75 } +var settopologicalcharge_map = map[int]string{0: "", + 30: settopologicalcharge_ptx_30, + 35: settopologicalcharge_ptx_35, + 37: settopologicalcharge_ptx_37, + 50: settopologicalcharge_ptx_50, + 52: settopologicalcharge_ptx_52, + 53: settopologicalcharge_ptx_53, + 60: settopologicalcharge_ptx_60, + 61: settopologicalcharge_ptx_61, + 70: settopologicalcharge_ptx_70, + 75: settopologicalcharge_ptx_75} // settopologicalcharge PTX code for various compute capabilities. -const( - settopologicalcharge_ptx_30 = ` +const ( + settopologicalcharge_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -705,7 +704,7 @@ BB0_72: ` - settopologicalcharge_ptx_35 = ` + settopologicalcharge_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -1313,7 +1312,7 @@ BB0_72: ` - settopologicalcharge_ptx_37 = ` + settopologicalcharge_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1921,7 +1920,7 @@ BB0_72: ` - settopologicalcharge_ptx_50 = ` + settopologicalcharge_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -2529,7 +2528,7 @@ BB0_72: ` - settopologicalcharge_ptx_52 = ` + settopologicalcharge_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -3137,7 +3136,7 @@ BB0_72: ` - settopologicalcharge_ptx_53 = ` + settopologicalcharge_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -3745,7 +3744,7 @@ BB0_72: ` - settopologicalcharge_ptx_60 = ` + settopologicalcharge_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -4353,7 +4352,7 @@ BB0_72: ` - settopologicalcharge_ptx_61 = ` + settopologicalcharge_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -4961,7 +4960,7 @@ BB0_72: ` - settopologicalcharge_ptx_70 = ` + settopologicalcharge_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -5569,7 +5568,7 @@ BB0_72: ` - settopologicalcharge_ptx_75 = ` + settopologicalcharge_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -6177,4 +6176,4 @@ BB0_72: ` - ) +) diff --git a/cuda/uniaxialanisotropy2_wrapper.go b/cuda/uniaxialanisotropy2_wrapper.go index 25c1f40a5..de44085b6 100644 --- a/cuda/uniaxialanisotropy2_wrapper.go +++ b/cuda/uniaxialanisotropy2_wrapper.go @@ -5,70 +5,70 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for adduniaxialanisotropy2 kernel var adduniaxialanisotropy2_code cu.Function // Stores the arguments for adduniaxialanisotropy2 kernel invocation -type adduniaxialanisotropy2_args_t struct{ - arg_Bx unsafe.Pointer - arg_By unsafe.Pointer - arg_Bz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_K1_ unsafe.Pointer - arg_K1_mul float32 - arg_K2_ unsafe.Pointer - arg_K2_mul float32 - arg_ux_ unsafe.Pointer - arg_ux_mul float32 - arg_uy_ unsafe.Pointer - arg_uy_mul float32 - arg_uz_ unsafe.Pointer - arg_uz_mul float32 - arg_N int - argptr [19]unsafe.Pointer +type adduniaxialanisotropy2_args_t struct { + arg_Bx unsafe.Pointer + arg_By unsafe.Pointer + arg_Bz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_K1_ unsafe.Pointer + arg_K1_mul float32 + arg_K2_ unsafe.Pointer + arg_K2_mul float32 + arg_ux_ unsafe.Pointer + arg_ux_mul float32 + arg_uy_ unsafe.Pointer + arg_uy_mul float32 + arg_uz_ unsafe.Pointer + arg_uz_mul float32 + arg_N int + argptr [19]unsafe.Pointer sync.Mutex } // Stores the arguments for adduniaxialanisotropy2 kernel invocation var adduniaxialanisotropy2_args adduniaxialanisotropy2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - adduniaxialanisotropy2_args.argptr[0] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Bx) - adduniaxialanisotropy2_args.argptr[1] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_By) - adduniaxialanisotropy2_args.argptr[2] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Bz) - adduniaxialanisotropy2_args.argptr[3] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_mx) - adduniaxialanisotropy2_args.argptr[4] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_my) - adduniaxialanisotropy2_args.argptr[5] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_mz) - adduniaxialanisotropy2_args.argptr[6] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Ms_) - adduniaxialanisotropy2_args.argptr[7] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Ms_mul) - adduniaxialanisotropy2_args.argptr[8] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K1_) - adduniaxialanisotropy2_args.argptr[9] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K1_mul) - adduniaxialanisotropy2_args.argptr[10] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K2_) - adduniaxialanisotropy2_args.argptr[11] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K2_mul) - adduniaxialanisotropy2_args.argptr[12] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_ux_) - adduniaxialanisotropy2_args.argptr[13] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_ux_mul) - adduniaxialanisotropy2_args.argptr[14] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uy_) - adduniaxialanisotropy2_args.argptr[15] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uy_mul) - adduniaxialanisotropy2_args.argptr[16] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uz_) - adduniaxialanisotropy2_args.argptr[17] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uz_mul) - adduniaxialanisotropy2_args.argptr[18] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_N) - } + adduniaxialanisotropy2_args.argptr[0] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Bx) + adduniaxialanisotropy2_args.argptr[1] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_By) + adduniaxialanisotropy2_args.argptr[2] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Bz) + adduniaxialanisotropy2_args.argptr[3] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_mx) + adduniaxialanisotropy2_args.argptr[4] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_my) + adduniaxialanisotropy2_args.argptr[5] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_mz) + adduniaxialanisotropy2_args.argptr[6] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Ms_) + adduniaxialanisotropy2_args.argptr[7] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_Ms_mul) + adduniaxialanisotropy2_args.argptr[8] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K1_) + adduniaxialanisotropy2_args.argptr[9] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K1_mul) + adduniaxialanisotropy2_args.argptr[10] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K2_) + adduniaxialanisotropy2_args.argptr[11] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_K2_mul) + adduniaxialanisotropy2_args.argptr[12] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_ux_) + adduniaxialanisotropy2_args.argptr[13] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_ux_mul) + adduniaxialanisotropy2_args.argptr[14] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uy_) + adduniaxialanisotropy2_args.argptr[15] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uy_mul) + adduniaxialanisotropy2_args.argptr[16] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uz_) + adduniaxialanisotropy2_args.argptr[17] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_uz_mul) + adduniaxialanisotropy2_args.argptr[18] = unsafe.Pointer(&adduniaxialanisotropy2_args.arg_N) +} // Wrapper for adduniaxialanisotropy2 CUDA kernel, asynchronous. -func k_adduniaxialanisotropy2_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, K1_ unsafe.Pointer, K1_mul float32, K2_ unsafe.Pointer, K2_mul float32, ux_ unsafe.Pointer, ux_mul float32, uy_ unsafe.Pointer, uy_mul float32, uz_ unsafe.Pointer, uz_mul float32, N int, cfg *config) { - if Synchronous{ // debug +func k_adduniaxialanisotropy2_async(Bx unsafe.Pointer, By unsafe.Pointer, Bz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, K1_ unsafe.Pointer, K1_mul float32, K2_ unsafe.Pointer, K2_mul float32, ux_ unsafe.Pointer, ux_mul float32, uy_ unsafe.Pointer, uy_mul float32, uz_ unsafe.Pointer, uz_mul float32, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("adduniaxialanisotropy2") } @@ -76,56 +76,55 @@ func k_adduniaxialanisotropy2_async ( Bx unsafe.Pointer, By unsafe.Pointer, Bz u adduniaxialanisotropy2_args.Lock() defer adduniaxialanisotropy2_args.Unlock() - if adduniaxialanisotropy2_code == 0{ + if adduniaxialanisotropy2_code == 0 { adduniaxialanisotropy2_code = fatbinLoad(adduniaxialanisotropy2_map, "adduniaxialanisotropy2") } - adduniaxialanisotropy2_args.arg_Bx = Bx - adduniaxialanisotropy2_args.arg_By = By - adduniaxialanisotropy2_args.arg_Bz = Bz - adduniaxialanisotropy2_args.arg_mx = mx - adduniaxialanisotropy2_args.arg_my = my - adduniaxialanisotropy2_args.arg_mz = mz - adduniaxialanisotropy2_args.arg_Ms_ = Ms_ - adduniaxialanisotropy2_args.arg_Ms_mul = Ms_mul - adduniaxialanisotropy2_args.arg_K1_ = K1_ - adduniaxialanisotropy2_args.arg_K1_mul = K1_mul - adduniaxialanisotropy2_args.arg_K2_ = K2_ - adduniaxialanisotropy2_args.arg_K2_mul = K2_mul - adduniaxialanisotropy2_args.arg_ux_ = ux_ - adduniaxialanisotropy2_args.arg_ux_mul = ux_mul - adduniaxialanisotropy2_args.arg_uy_ = uy_ - adduniaxialanisotropy2_args.arg_uy_mul = uy_mul - adduniaxialanisotropy2_args.arg_uz_ = uz_ - adduniaxialanisotropy2_args.arg_uz_mul = uz_mul - adduniaxialanisotropy2_args.arg_N = N - + adduniaxialanisotropy2_args.arg_Bx = Bx + adduniaxialanisotropy2_args.arg_By = By + adduniaxialanisotropy2_args.arg_Bz = Bz + adduniaxialanisotropy2_args.arg_mx = mx + adduniaxialanisotropy2_args.arg_my = my + adduniaxialanisotropy2_args.arg_mz = mz + adduniaxialanisotropy2_args.arg_Ms_ = Ms_ + adduniaxialanisotropy2_args.arg_Ms_mul = Ms_mul + adduniaxialanisotropy2_args.arg_K1_ = K1_ + adduniaxialanisotropy2_args.arg_K1_mul = K1_mul + adduniaxialanisotropy2_args.arg_K2_ = K2_ + adduniaxialanisotropy2_args.arg_K2_mul = K2_mul + adduniaxialanisotropy2_args.arg_ux_ = ux_ + adduniaxialanisotropy2_args.arg_ux_mul = ux_mul + adduniaxialanisotropy2_args.arg_uy_ = uy_ + adduniaxialanisotropy2_args.arg_uy_mul = uy_mul + adduniaxialanisotropy2_args.arg_uz_ = uz_ + adduniaxialanisotropy2_args.arg_uz_mul = uz_mul + adduniaxialanisotropy2_args.arg_N = N args := adduniaxialanisotropy2_args.argptr[:] cu.LaunchKernel(adduniaxialanisotropy2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("adduniaxialanisotropy2") } } // maps compute capability on PTX code for adduniaxialanisotropy2 kernel. -var adduniaxialanisotropy2_map = map[int]string{ 0: "" , -30: adduniaxialanisotropy2_ptx_30 , -35: adduniaxialanisotropy2_ptx_35 , -37: adduniaxialanisotropy2_ptx_37 , -50: adduniaxialanisotropy2_ptx_50 , -52: adduniaxialanisotropy2_ptx_52 , -53: adduniaxialanisotropy2_ptx_53 , -60: adduniaxialanisotropy2_ptx_60 , -61: adduniaxialanisotropy2_ptx_61 , -70: adduniaxialanisotropy2_ptx_70 , -75: adduniaxialanisotropy2_ptx_75 } +var adduniaxialanisotropy2_map = map[int]string{0: "", + 30: adduniaxialanisotropy2_ptx_30, + 35: adduniaxialanisotropy2_ptx_35, + 37: adduniaxialanisotropy2_ptx_37, + 50: adduniaxialanisotropy2_ptx_50, + 52: adduniaxialanisotropy2_ptx_52, + 53: adduniaxialanisotropy2_ptx_53, + 60: adduniaxialanisotropy2_ptx_60, + 61: adduniaxialanisotropy2_ptx_61, + 70: adduniaxialanisotropy2_ptx_70, + 75: adduniaxialanisotropy2_ptx_75} // adduniaxialanisotropy2 PTX code for various compute capabilities. -const( - adduniaxialanisotropy2_ptx_30 = ` +const ( + adduniaxialanisotropy2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -319,7 +318,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_35 = ` + adduniaxialanisotropy2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -513,7 +512,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_37 = ` + adduniaxialanisotropy2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -707,7 +706,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_50 = ` + adduniaxialanisotropy2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -901,7 +900,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_52 = ` + adduniaxialanisotropy2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -1095,7 +1094,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_53 = ` + adduniaxialanisotropy2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -1289,7 +1288,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_60 = ` + adduniaxialanisotropy2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -1483,7 +1482,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_61 = ` + adduniaxialanisotropy2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -1677,7 +1676,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_70 = ` + adduniaxialanisotropy2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -1871,7 +1870,7 @@ BB0_18: ` - adduniaxialanisotropy2_ptx_75 = ` + adduniaxialanisotropy2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -2065,4 +2064,4 @@ BB0_18: ` - ) +) diff --git a/cuda/zeromask_wrapper.go b/cuda/zeromask_wrapper.go index 923846500..646e2289b 100644 --- a/cuda/zeromask_wrapper.go +++ b/cuda/zeromask_wrapper.go @@ -5,40 +5,40 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for zeromask kernel var zeromask_code cu.Function // Stores the arguments for zeromask kernel invocation -type zeromask_args_t struct{ - arg_dst unsafe.Pointer - arg_maskLUT unsafe.Pointer - arg_regions unsafe.Pointer - arg_N int - argptr [4]unsafe.Pointer +type zeromask_args_t struct { + arg_dst unsafe.Pointer + arg_maskLUT unsafe.Pointer + arg_regions unsafe.Pointer + arg_N int + argptr [4]unsafe.Pointer sync.Mutex } // Stores the arguments for zeromask kernel invocation var zeromask_args zeromask_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - zeromask_args.argptr[0] = unsafe.Pointer(&zeromask_args.arg_dst) - zeromask_args.argptr[1] = unsafe.Pointer(&zeromask_args.arg_maskLUT) - zeromask_args.argptr[2] = unsafe.Pointer(&zeromask_args.arg_regions) - zeromask_args.argptr[3] = unsafe.Pointer(&zeromask_args.arg_N) - } + zeromask_args.argptr[0] = unsafe.Pointer(&zeromask_args.arg_dst) + zeromask_args.argptr[1] = unsafe.Pointer(&zeromask_args.arg_maskLUT) + zeromask_args.argptr[2] = unsafe.Pointer(&zeromask_args.arg_regions) + zeromask_args.argptr[3] = unsafe.Pointer(&zeromask_args.arg_N) +} // Wrapper for zeromask CUDA kernel, asynchronous. -func k_zeromask_async ( dst unsafe.Pointer, maskLUT unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { - if Synchronous{ // debug +func k_zeromask_async(dst unsafe.Pointer, maskLUT unsafe.Pointer, regions unsafe.Pointer, N int, cfg *config) { + if Synchronous { // debug Sync() timer.Start("zeromask") } @@ -46,41 +46,40 @@ func k_zeromask_async ( dst unsafe.Pointer, maskLUT unsafe.Pointer, regions unsa zeromask_args.Lock() defer zeromask_args.Unlock() - if zeromask_code == 0{ + if zeromask_code == 0 { zeromask_code = fatbinLoad(zeromask_map, "zeromask") } - zeromask_args.arg_dst = dst - zeromask_args.arg_maskLUT = maskLUT - zeromask_args.arg_regions = regions - zeromask_args.arg_N = N - + zeromask_args.arg_dst = dst + zeromask_args.arg_maskLUT = maskLUT + zeromask_args.arg_regions = regions + zeromask_args.arg_N = N args := zeromask_args.argptr[:] cu.LaunchKernel(zeromask_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("zeromask") } } // maps compute capability on PTX code for zeromask kernel. -var zeromask_map = map[int]string{ 0: "" , -30: zeromask_ptx_30 , -35: zeromask_ptx_35 , -37: zeromask_ptx_37 , -50: zeromask_ptx_50 , -52: zeromask_ptx_52 , -53: zeromask_ptx_53 , -60: zeromask_ptx_60 , -61: zeromask_ptx_61 , -70: zeromask_ptx_70 , -75: zeromask_ptx_75 } +var zeromask_map = map[int]string{0: "", + 30: zeromask_ptx_30, + 35: zeromask_ptx_35, + 37: zeromask_ptx_37, + 50: zeromask_ptx_50, + 52: zeromask_ptx_52, + 53: zeromask_ptx_53, + 60: zeromask_ptx_60, + 61: zeromask_ptx_61, + 70: zeromask_ptx_70, + 75: zeromask_ptx_75} // zeromask PTX code for various compute capabilities. -const( - zeromask_ptx_30 = ` +const ( + zeromask_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -137,7 +136,7 @@ BB0_3: ` - zeromask_ptx_35 = ` + zeromask_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -197,7 +196,7 @@ BB0_3: ` - zeromask_ptx_37 = ` + zeromask_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -257,7 +256,7 @@ BB0_3: ` - zeromask_ptx_50 = ` + zeromask_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -317,7 +316,7 @@ BB0_3: ` - zeromask_ptx_52 = ` + zeromask_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -377,7 +376,7 @@ BB0_3: ` - zeromask_ptx_53 = ` + zeromask_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -437,7 +436,7 @@ BB0_3: ` - zeromask_ptx_60 = ` + zeromask_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -497,7 +496,7 @@ BB0_3: ` - zeromask_ptx_61 = ` + zeromask_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -557,7 +556,7 @@ BB0_3: ` - zeromask_ptx_70 = ` + zeromask_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -617,7 +616,7 @@ BB0_3: ` - zeromask_ptx_75 = ` + zeromask_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -677,4 +676,4 @@ BB0_3: ` - ) +) diff --git a/cuda/zhangli2_wrapper.go b/cuda/zhangli2_wrapper.go index da0434a9a..ece332e93 100644 --- a/cuda/zhangli2_wrapper.go +++ b/cuda/zhangli2_wrapper.go @@ -5,86 +5,86 @@ package cuda EDITING IS FUTILE. */ -import( - "unsafe" +import ( "github.com/mumax/3/cuda/cu" "github.com/mumax/3/timer" "sync" + "unsafe" ) // CUDA handle for addzhanglitorque2 kernel var addzhanglitorque2_code cu.Function // Stores the arguments for addzhanglitorque2 kernel invocation -type addzhanglitorque2_args_t struct{ - arg_tx unsafe.Pointer - arg_ty unsafe.Pointer - arg_tz unsafe.Pointer - arg_mx unsafe.Pointer - arg_my unsafe.Pointer - arg_mz unsafe.Pointer - arg_Ms_ unsafe.Pointer - arg_Ms_mul float32 - arg_jx_ unsafe.Pointer - arg_jx_mul float32 - arg_jy_ unsafe.Pointer - arg_jy_mul float32 - arg_jz_ unsafe.Pointer - arg_jz_mul float32 - arg_alpha_ unsafe.Pointer - arg_alpha_mul float32 - arg_xi_ unsafe.Pointer - arg_xi_mul float32 - arg_pol_ unsafe.Pointer - arg_pol_mul float32 - arg_cx float32 - arg_cy float32 - arg_cz float32 - arg_Nx int - arg_Ny int - arg_Nz int - arg_PBC byte - argptr [27]unsafe.Pointer +type addzhanglitorque2_args_t struct { + arg_tx unsafe.Pointer + arg_ty unsafe.Pointer + arg_tz unsafe.Pointer + arg_mx unsafe.Pointer + arg_my unsafe.Pointer + arg_mz unsafe.Pointer + arg_Ms_ unsafe.Pointer + arg_Ms_mul float32 + arg_jx_ unsafe.Pointer + arg_jx_mul float32 + arg_jy_ unsafe.Pointer + arg_jy_mul float32 + arg_jz_ unsafe.Pointer + arg_jz_mul float32 + arg_alpha_ unsafe.Pointer + arg_alpha_mul float32 + arg_xi_ unsafe.Pointer + arg_xi_mul float32 + arg_pol_ unsafe.Pointer + arg_pol_mul float32 + arg_cx float32 + arg_cy float32 + arg_cz float32 + arg_Nx int + arg_Ny int + arg_Nz int + arg_PBC byte + argptr [27]unsafe.Pointer sync.Mutex } // Stores the arguments for addzhanglitorque2 kernel invocation var addzhanglitorque2_args addzhanglitorque2_args_t -func init(){ +func init() { // CUDA driver kernel call wants pointers to arguments, set them up once. - addzhanglitorque2_args.argptr[0] = unsafe.Pointer(&addzhanglitorque2_args.arg_tx) - addzhanglitorque2_args.argptr[1] = unsafe.Pointer(&addzhanglitorque2_args.arg_ty) - addzhanglitorque2_args.argptr[2] = unsafe.Pointer(&addzhanglitorque2_args.arg_tz) - addzhanglitorque2_args.argptr[3] = unsafe.Pointer(&addzhanglitorque2_args.arg_mx) - addzhanglitorque2_args.argptr[4] = unsafe.Pointer(&addzhanglitorque2_args.arg_my) - addzhanglitorque2_args.argptr[5] = unsafe.Pointer(&addzhanglitorque2_args.arg_mz) - addzhanglitorque2_args.argptr[6] = unsafe.Pointer(&addzhanglitorque2_args.arg_Ms_) - addzhanglitorque2_args.argptr[7] = unsafe.Pointer(&addzhanglitorque2_args.arg_Ms_mul) - addzhanglitorque2_args.argptr[8] = unsafe.Pointer(&addzhanglitorque2_args.arg_jx_) - addzhanglitorque2_args.argptr[9] = unsafe.Pointer(&addzhanglitorque2_args.arg_jx_mul) - addzhanglitorque2_args.argptr[10] = unsafe.Pointer(&addzhanglitorque2_args.arg_jy_) - addzhanglitorque2_args.argptr[11] = unsafe.Pointer(&addzhanglitorque2_args.arg_jy_mul) - addzhanglitorque2_args.argptr[12] = unsafe.Pointer(&addzhanglitorque2_args.arg_jz_) - addzhanglitorque2_args.argptr[13] = unsafe.Pointer(&addzhanglitorque2_args.arg_jz_mul) - addzhanglitorque2_args.argptr[14] = unsafe.Pointer(&addzhanglitorque2_args.arg_alpha_) - addzhanglitorque2_args.argptr[15] = unsafe.Pointer(&addzhanglitorque2_args.arg_alpha_mul) - addzhanglitorque2_args.argptr[16] = unsafe.Pointer(&addzhanglitorque2_args.arg_xi_) - addzhanglitorque2_args.argptr[17] = unsafe.Pointer(&addzhanglitorque2_args.arg_xi_mul) - addzhanglitorque2_args.argptr[18] = unsafe.Pointer(&addzhanglitorque2_args.arg_pol_) - addzhanglitorque2_args.argptr[19] = unsafe.Pointer(&addzhanglitorque2_args.arg_pol_mul) - addzhanglitorque2_args.argptr[20] = unsafe.Pointer(&addzhanglitorque2_args.arg_cx) - addzhanglitorque2_args.argptr[21] = unsafe.Pointer(&addzhanglitorque2_args.arg_cy) - addzhanglitorque2_args.argptr[22] = unsafe.Pointer(&addzhanglitorque2_args.arg_cz) - addzhanglitorque2_args.argptr[23] = unsafe.Pointer(&addzhanglitorque2_args.arg_Nx) - addzhanglitorque2_args.argptr[24] = unsafe.Pointer(&addzhanglitorque2_args.arg_Ny) - addzhanglitorque2_args.argptr[25] = unsafe.Pointer(&addzhanglitorque2_args.arg_Nz) - addzhanglitorque2_args.argptr[26] = unsafe.Pointer(&addzhanglitorque2_args.arg_PBC) - } + addzhanglitorque2_args.argptr[0] = unsafe.Pointer(&addzhanglitorque2_args.arg_tx) + addzhanglitorque2_args.argptr[1] = unsafe.Pointer(&addzhanglitorque2_args.arg_ty) + addzhanglitorque2_args.argptr[2] = unsafe.Pointer(&addzhanglitorque2_args.arg_tz) + addzhanglitorque2_args.argptr[3] = unsafe.Pointer(&addzhanglitorque2_args.arg_mx) + addzhanglitorque2_args.argptr[4] = unsafe.Pointer(&addzhanglitorque2_args.arg_my) + addzhanglitorque2_args.argptr[5] = unsafe.Pointer(&addzhanglitorque2_args.arg_mz) + addzhanglitorque2_args.argptr[6] = unsafe.Pointer(&addzhanglitorque2_args.arg_Ms_) + addzhanglitorque2_args.argptr[7] = unsafe.Pointer(&addzhanglitorque2_args.arg_Ms_mul) + addzhanglitorque2_args.argptr[8] = unsafe.Pointer(&addzhanglitorque2_args.arg_jx_) + addzhanglitorque2_args.argptr[9] = unsafe.Pointer(&addzhanglitorque2_args.arg_jx_mul) + addzhanglitorque2_args.argptr[10] = unsafe.Pointer(&addzhanglitorque2_args.arg_jy_) + addzhanglitorque2_args.argptr[11] = unsafe.Pointer(&addzhanglitorque2_args.arg_jy_mul) + addzhanglitorque2_args.argptr[12] = unsafe.Pointer(&addzhanglitorque2_args.arg_jz_) + addzhanglitorque2_args.argptr[13] = unsafe.Pointer(&addzhanglitorque2_args.arg_jz_mul) + addzhanglitorque2_args.argptr[14] = unsafe.Pointer(&addzhanglitorque2_args.arg_alpha_) + addzhanglitorque2_args.argptr[15] = unsafe.Pointer(&addzhanglitorque2_args.arg_alpha_mul) + addzhanglitorque2_args.argptr[16] = unsafe.Pointer(&addzhanglitorque2_args.arg_xi_) + addzhanglitorque2_args.argptr[17] = unsafe.Pointer(&addzhanglitorque2_args.arg_xi_mul) + addzhanglitorque2_args.argptr[18] = unsafe.Pointer(&addzhanglitorque2_args.arg_pol_) + addzhanglitorque2_args.argptr[19] = unsafe.Pointer(&addzhanglitorque2_args.arg_pol_mul) + addzhanglitorque2_args.argptr[20] = unsafe.Pointer(&addzhanglitorque2_args.arg_cx) + addzhanglitorque2_args.argptr[21] = unsafe.Pointer(&addzhanglitorque2_args.arg_cy) + addzhanglitorque2_args.argptr[22] = unsafe.Pointer(&addzhanglitorque2_args.arg_cz) + addzhanglitorque2_args.argptr[23] = unsafe.Pointer(&addzhanglitorque2_args.arg_Nx) + addzhanglitorque2_args.argptr[24] = unsafe.Pointer(&addzhanglitorque2_args.arg_Ny) + addzhanglitorque2_args.argptr[25] = unsafe.Pointer(&addzhanglitorque2_args.arg_Nz) + addzhanglitorque2_args.argptr[26] = unsafe.Pointer(&addzhanglitorque2_args.arg_PBC) +} // Wrapper for addzhanglitorque2 CUDA kernel, asynchronous. -func k_addzhanglitorque2_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, jx_ unsafe.Pointer, jx_mul float32, jy_ unsafe.Pointer, jy_mul float32, jz_ unsafe.Pointer, jz_mul float32, alpha_ unsafe.Pointer, alpha_mul float32, xi_ unsafe.Pointer, xi_mul float32, pol_ unsafe.Pointer, pol_mul float32, cx float32, cy float32, cz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { - if Synchronous{ // debug +func k_addzhanglitorque2_async(tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe.Pointer, mx unsafe.Pointer, my unsafe.Pointer, mz unsafe.Pointer, Ms_ unsafe.Pointer, Ms_mul float32, jx_ unsafe.Pointer, jx_mul float32, jy_ unsafe.Pointer, jy_mul float32, jz_ unsafe.Pointer, jz_mul float32, alpha_ unsafe.Pointer, alpha_mul float32, xi_ unsafe.Pointer, xi_mul float32, pol_ unsafe.Pointer, pol_mul float32, cx float32, cy float32, cz float32, Nx int, Ny int, Nz int, PBC byte, cfg *config) { + if Synchronous { // debug Sync() timer.Start("addzhanglitorque2") } @@ -92,64 +92,63 @@ func k_addzhanglitorque2_async ( tx unsafe.Pointer, ty unsafe.Pointer, tz unsafe addzhanglitorque2_args.Lock() defer addzhanglitorque2_args.Unlock() - if addzhanglitorque2_code == 0{ + if addzhanglitorque2_code == 0 { addzhanglitorque2_code = fatbinLoad(addzhanglitorque2_map, "addzhanglitorque2") } - addzhanglitorque2_args.arg_tx = tx - addzhanglitorque2_args.arg_ty = ty - addzhanglitorque2_args.arg_tz = tz - addzhanglitorque2_args.arg_mx = mx - addzhanglitorque2_args.arg_my = my - addzhanglitorque2_args.arg_mz = mz - addzhanglitorque2_args.arg_Ms_ = Ms_ - addzhanglitorque2_args.arg_Ms_mul = Ms_mul - addzhanglitorque2_args.arg_jx_ = jx_ - addzhanglitorque2_args.arg_jx_mul = jx_mul - addzhanglitorque2_args.arg_jy_ = jy_ - addzhanglitorque2_args.arg_jy_mul = jy_mul - addzhanglitorque2_args.arg_jz_ = jz_ - addzhanglitorque2_args.arg_jz_mul = jz_mul - addzhanglitorque2_args.arg_alpha_ = alpha_ - addzhanglitorque2_args.arg_alpha_mul = alpha_mul - addzhanglitorque2_args.arg_xi_ = xi_ - addzhanglitorque2_args.arg_xi_mul = xi_mul - addzhanglitorque2_args.arg_pol_ = pol_ - addzhanglitorque2_args.arg_pol_mul = pol_mul - addzhanglitorque2_args.arg_cx = cx - addzhanglitorque2_args.arg_cy = cy - addzhanglitorque2_args.arg_cz = cz - addzhanglitorque2_args.arg_Nx = Nx - addzhanglitorque2_args.arg_Ny = Ny - addzhanglitorque2_args.arg_Nz = Nz - addzhanglitorque2_args.arg_PBC = PBC - + addzhanglitorque2_args.arg_tx = tx + addzhanglitorque2_args.arg_ty = ty + addzhanglitorque2_args.arg_tz = tz + addzhanglitorque2_args.arg_mx = mx + addzhanglitorque2_args.arg_my = my + addzhanglitorque2_args.arg_mz = mz + addzhanglitorque2_args.arg_Ms_ = Ms_ + addzhanglitorque2_args.arg_Ms_mul = Ms_mul + addzhanglitorque2_args.arg_jx_ = jx_ + addzhanglitorque2_args.arg_jx_mul = jx_mul + addzhanglitorque2_args.arg_jy_ = jy_ + addzhanglitorque2_args.arg_jy_mul = jy_mul + addzhanglitorque2_args.arg_jz_ = jz_ + addzhanglitorque2_args.arg_jz_mul = jz_mul + addzhanglitorque2_args.arg_alpha_ = alpha_ + addzhanglitorque2_args.arg_alpha_mul = alpha_mul + addzhanglitorque2_args.arg_xi_ = xi_ + addzhanglitorque2_args.arg_xi_mul = xi_mul + addzhanglitorque2_args.arg_pol_ = pol_ + addzhanglitorque2_args.arg_pol_mul = pol_mul + addzhanglitorque2_args.arg_cx = cx + addzhanglitorque2_args.arg_cy = cy + addzhanglitorque2_args.arg_cz = cz + addzhanglitorque2_args.arg_Nx = Nx + addzhanglitorque2_args.arg_Ny = Ny + addzhanglitorque2_args.arg_Nz = Nz + addzhanglitorque2_args.arg_PBC = PBC args := addzhanglitorque2_args.argptr[:] cu.LaunchKernel(addzhanglitorque2_code, cfg.Grid.X, cfg.Grid.Y, cfg.Grid.Z, cfg.Block.X, cfg.Block.Y, cfg.Block.Z, 0, stream0, args) - if Synchronous{ // debug + if Synchronous { // debug Sync() timer.Stop("addzhanglitorque2") } } // maps compute capability on PTX code for addzhanglitorque2 kernel. -var addzhanglitorque2_map = map[int]string{ 0: "" , -30: addzhanglitorque2_ptx_30 , -35: addzhanglitorque2_ptx_35 , -37: addzhanglitorque2_ptx_37 , -50: addzhanglitorque2_ptx_50 , -52: addzhanglitorque2_ptx_52 , -53: addzhanglitorque2_ptx_53 , -60: addzhanglitorque2_ptx_60 , -61: addzhanglitorque2_ptx_61 , -70: addzhanglitorque2_ptx_70 , -75: addzhanglitorque2_ptx_75 } +var addzhanglitorque2_map = map[int]string{0: "", + 30: addzhanglitorque2_ptx_30, + 35: addzhanglitorque2_ptx_35, + 37: addzhanglitorque2_ptx_37, + 50: addzhanglitorque2_ptx_50, + 52: addzhanglitorque2_ptx_52, + 53: addzhanglitorque2_ptx_53, + 60: addzhanglitorque2_ptx_60, + 61: addzhanglitorque2_ptx_61, + 70: addzhanglitorque2_ptx_70, + 75: addzhanglitorque2_ptx_75} // addzhanglitorque2 PTX code for various compute capabilities. -const( - addzhanglitorque2_ptx_30 = ` +const ( + addzhanglitorque2_ptx_30 = ` .version 6.3 .target sm_30 .address_size 64 @@ -787,7 +786,7 @@ BB0_78: ` - addzhanglitorque2_ptx_35 = ` + addzhanglitorque2_ptx_35 = ` .version 6.3 .target sm_35 .address_size 64 @@ -1383,7 +1382,7 @@ BB0_78: ` - addzhanglitorque2_ptx_37 = ` + addzhanglitorque2_ptx_37 = ` .version 6.3 .target sm_37 .address_size 64 @@ -1979,7 +1978,7 @@ BB0_78: ` - addzhanglitorque2_ptx_50 = ` + addzhanglitorque2_ptx_50 = ` .version 6.3 .target sm_50 .address_size 64 @@ -2575,7 +2574,7 @@ BB0_78: ` - addzhanglitorque2_ptx_52 = ` + addzhanglitorque2_ptx_52 = ` .version 6.3 .target sm_52 .address_size 64 @@ -3171,7 +3170,7 @@ BB0_78: ` - addzhanglitorque2_ptx_53 = ` + addzhanglitorque2_ptx_53 = ` .version 6.3 .target sm_53 .address_size 64 @@ -3767,7 +3766,7 @@ BB0_78: ` - addzhanglitorque2_ptx_60 = ` + addzhanglitorque2_ptx_60 = ` .version 6.3 .target sm_60 .address_size 64 @@ -4363,7 +4362,7 @@ BB0_78: ` - addzhanglitorque2_ptx_61 = ` + addzhanglitorque2_ptx_61 = ` .version 6.3 .target sm_61 .address_size 64 @@ -4959,7 +4958,7 @@ BB0_78: ` - addzhanglitorque2_ptx_70 = ` + addzhanglitorque2_ptx_70 = ` .version 6.3 .target sm_70 .address_size 64 @@ -5555,7 +5554,7 @@ BB0_78: ` - addzhanglitorque2_ptx_75 = ` + addzhanglitorque2_ptx_75 = ` .version 6.3 .target sm_75 .address_size 64 @@ -6151,4 +6150,4 @@ BB0_78: ` - ) +) diff --git a/engine/exchange.go b/engine/exchange.go index b73e953f2..4b4a8d1cc 100644 --- a/engine/exchange.go +++ b/engine/exchange.go @@ -26,6 +26,8 @@ var ( // Average exchange coupling with neighbors. Useful to debug inter-region exchange ExchCoupling = NewScalarField("ExchCoupling", "arb.", "Average exchange coupling with neighbors", exchangeDecode) DindCoupling = NewScalarField("DindCoupling", "arb.", "Average DMI coupling with neighbors", dindDecode) + + OpenBC = false ) var AddExchangeEnergyDensity = makeEdensAdder(&B_exch, -0.5) // TODO: normal func @@ -36,6 +38,7 @@ func init() { DeclFunc("ext_InterExchange", InterExchange, "Sets exchange coupling between two regions.") DeclFunc("ext_ScaleDind", ScaleInterDind, "Re-scales Dind coupling between two regions.") DeclFunc("ext_InterDind", InterDind, "Sets Dind coupling between two regions.") + DeclVar("OpenBC", &OpenBC, "Use open boundary conditions (default=false)") lex2.init(Aex) din2.init(Dind) dbulk2.init(Dbulk) @@ -52,9 +55,9 @@ func AddExchangeField(dst *data.Slice) { cuda.AddExchange(dst, M.Buffer(), lex2.Gpu(), ms, regions.Gpu(), M.Mesh()) case inter && !bulk: Refer("mulkers2017") - cuda.AddDMI(dst, M.Buffer(), lex2.Gpu(), din2.Gpu(), ms, regions.Gpu(), M.Mesh()) // dmi+exchange + cuda.AddDMI(dst, M.Buffer(), lex2.Gpu(), din2.Gpu(), ms, regions.Gpu(), M.Mesh(), OpenBC) // dmi+exchange case bulk && !inter: - cuda.AddDMIBulk(dst, M.Buffer(), lex2.Gpu(), dbulk2.Gpu(), ms, regions.Gpu(), M.Mesh()) // dmi+exchange + cuda.AddDMIBulk(dst, M.Buffer(), lex2.Gpu(), dbulk2.Gpu(), ms, regions.Gpu(), M.Mesh(), OpenBC) // dmi+exchange // TODO: add ScaleInterDbulk and InterDbulk case inter && bulk: util.Fatal("Cannot have induced and interfacial DMI at the same time") diff --git a/test/openbc.mx3 b/test/openbc.mx3 new file mode 100644 index 000000000..449e53b4a --- /dev/null +++ b/test/openbc.mx3 @@ -0,0 +1,104 @@ +/* + Test if the canting at the end of a nanowire corresponds to the 1D analytical + result if open boundary conditions are used. This test is similar to the + standard test proposed in arXiv:1803.11174 + + If the nanowire consists only out of one row of cells, the analytical canting + matches with the simulated canting if open (or periodic) boundary conditions are + used. The Neumann BC yields a different canting. + + This does not mean that Neumann BC are wrong. To be more precise, the analytical + result, as well as the numerical results obtained with open and Neumann BC are + slightly wrong because the width of the nanowire is not taken into account + properly. +*/ + + +ncell := 1024 +cs := 0.05 + +verbose := false + +DMI := 0.9 *4/pi // 90% of critical DMI strength +Dind = DMI +enabledemag = false +AnisU = vector(0,0,1) +Aex = 1. +Ku1 = 1. +Msat = 1. +minimizerstop = 1e-7 + +// --- Along the x direction -------------------------------------------------------- + +setgridsize(ncell,1,1) +setcellsize(cs,cs,cs) + +m = uniform(0,0,1) + +// ANALYTIC +theta0 := asin(DMI/2) +cant_analytic := 2*atan(exp(-cs/2)*tan(theta0/2)) // shift towards center of the cell + +// NEUMANN BC +openbc = false +minimize() +cant_neumann := atan2( m.getcell(0,0,0)[0], m.getcell(0,0,0)[2] ) + +// OPEN BC +openbc = true +minimize() +cant_open := atan2( m.getcell(0,0,0)[0], m.getcell(0,0,0)[2] ) + +// PERIODIC BC +openbc = false +setpbc(0,1,0) +minimize() +cant_periodic := atan2( m.getcell(0,0,0)[0], m.getcell(0,0,0)[2] ) + +if verbose { + print("Neumann: ", cant_neumann) + print("Open: ", cant_open) + print("Periodic: ", cant_periodic) + print("Analytic: ", cant_analytic) +} + +expect("edge canting", cant_open, cant_analytic, 1e-3) +expect("edge canting", cant_open, cant_periodic, 1e-5) + +// --- Along the y direction -------------------------------------------------------- + +setgridsize(1,ncell,1) +setcellsize(cs,cs,cs) +setpbc(0,0,0) + +m = uniform(0,0,1) + +// ANALYTIC +theta0 = asin(DMI/2) +cant_analytic = 2*atan(exp(-cs/2)*tan(theta0/2)) // shift towards center of the cell + +// NEUMANN BC +openbc = false +minimize() +cant_neumann = atan2( m.getcell(0,0,0)[1], m.getcell(0,0,0)[2] ) + +// OPEN BC +openbc = true +minimize() +cant_open = atan2( m.getcell(0,0,0)[1], m.getcell(0,0,0)[2] ) + +// PERIODIC BC +openbc = false +setpbc(1,0,0) +minimize() +cant_periodic = atan2( m.getcell(0,0,0)[1], m.getcell(0,0,0)[2] ) + +if verbose { + print("Neumann: ", cant_neumann) + print("Open: ", cant_open) + print("Periodic: ", cant_periodic) + print("Analytic: ", cant_analytic) +} + +expect("edge canting", cant_open, cant_analytic, 1e-3) +expect("edge canting", cant_open, cant_periodic, 1e-5)