format PE64 GUI 5.0
entry start

include 'win64a.inc'
include '..\cudnnH.txt'

macro .img name { invoke  LoadingFile,name,img
        call    ImgRGB2Flt3
	}
macro ExitMsg a { Msg a
	invoke  ExitProcess,0
}
macro SaveFile chName,chDat,chSizeByts {
      invoke CreateFile,chName,GENERIC_WRITE,0,0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL
      mov    [fhand],rax
      invoke WriteFile,[fhand],chDat,chSizeByts,rbait,0
      invoke CloseHandle,[fhand]
      }

macro mulGray2RGB1 { movzx eax,byte [edx]
        cvtsi2ss xmm2,eax
        mulss xmm2,[ebx]
  ;mov eax,1.1           ;bright
  ;movd xmm3,eax
  ;mulss xmm2,xmm3

        cvtss2si eax,xmm2
}
macro mulGray2RGB { ;mul byte [edx]
        ;shr ax,8
        }

inverseColor = 0

macro Dbg a, arg& {  if dbg_mode#a = 1
                       arg
                    end if
                }
macro Msg a { invoke  MessageBox,0,a,'msg:',0 }
macro imgColor a,b { cmp al,a
                   jae @f
                   mov al,b
                   ;xor eax,eax
@@:
}

section '.text' code readable executable
  proc  GetcuError
        invoke  cudnnGetErrorString,rax ;Message
        ;invoke  MessageBox,0,Message,'cu error:',0
        invoke  MessageBox,0,rax,'cuDNN error:',0
        invoke sprintf,Message+32,'%u ',dword [Message]
        invoke  MessageBox,0, Message+32,"Value",0
        ret
  endp

start:
        push  rbp
        invoke  cuInit,0
        invoke  cudaSetDevice,0
