Page 3 of 3

Re: Max(), Min(), MaxF(), MinF()

Posted: Sat Jan 21, 2017 8:39 pm
by Demivec
For unsigned integers:

Code: Select all

Procedure.i uMax(val1.i, val2.i)
   EnableASM
   CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
      MOV eax,[p.v_val1]
      CMP eax, [p.v_val2]
      CMOVNA eax,[p.v_val2]
   CompilerElse
      MOV rax,[p.v_val1]
      CMP rax, [p.v_val2]
      CMOVNA rax, [p.v_val2]
   CompilerEndIf
   DisableASM
   ProcedureReturn
EndProcedure

Procedure.i uMin (val1.i, val2.i)
  EnableASM
  CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
    MOV Eax, val1
    CMP Eax, val2
    CMOVA Eax, val2
  CompilerElse
    MOV rax, val1
    CMP rax, val2
    CMOVA rax, val2
  CompilerEndIf
  DisableASM
  ProcedureReturn
EndProcedure

Re: Max(), Min(), MaxF(), MinF()

Posted: Sat Jan 21, 2017 11:26 pm
by Michael Vogel
Great - thanks - Demivec :D