Max(), Min(), MaxF(), MinF()

Share your advanced PureBasic knowledge/code with the community.
User avatar
Demivec
Addict
Addict
Posts: 4260
Joined: Mon Jul 25, 2005 3:51 pm
Location: Utah, USA

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

Post 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
User avatar
Michael Vogel
Addict
Addict
Posts: 2797
Joined: Thu Feb 09, 2006 11:27 pm
Contact:

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

Post by Michael Vogel »

Great - thanks - Demivec :D
Post Reply