From c798157fd8b6ed54dd81c653061bace0e44a0c36 Mon Sep 17 00:00:00 2001 From: Kwarde Date: Mon, 23 Jun 2025 15:24:30 +0200 Subject: [PATCH] Use conditional moves in max[u]()/min[u]() --- core.asm | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/core.asm b/core.asm index 7845182..950d7c5 100644 --- a/core.asm +++ b/core.asm @@ -14,10 +14,8 @@ min: mov rax, rdi cmp rdi, rsi - jl .quit - mov rax, rsi + cmovg rax, rsi - .quit: leave ret ;----- minu(unsigned int a, unsigned int b) -----; @@ -28,10 +26,8 @@ minu: mov rax, rdi cmp rdi, rsi - jb .quit - mov rax, rsi + cmova rax, rsi - .quit: leave ret ;----- max(int a, int b) -----; @@ -42,10 +38,8 @@ max: mov rax, rdi cmp rdi, rsi - jg .quit - mov rax, rsi + cmovl rax, rsi - .quit: leave ret ;----- maxu(unsigned int a, unsigned int b) -----; @@ -56,10 +50,8 @@ maxu: mov rax, rdi cmp rdi, rsi - ja .quit - mov rax, rsi + cmovb rax, rsi - .quit: leave ret ;----- islower(char* c) -----;