cmp1ってローカル変数に代入するから
こんな小さなコードだと少しはロスがあると思うわけ。
(フルアセンブラや、gccやbccのようにレジスタを直接返せれば別だけど)

ってゆーかさ、"トリッキーなコード"を名乗るんだったら、
せめてこの程度までは最適化してから比較しようよ。

と言ったものの、あまり詳しくないんで、
見た目が最適化されただけで、内部的なクロック数は増えてるしれない。

int cmp1(int a, int b)
{
 asm {
  mov eax, a  // 引数をレジスタ渡しだと・・・
  cmp eax, b  // 
  setl al
  setg cl
  neg al
  xor al, cl
  cbw
  cwde
  mov a, eax  // <-これがじゃま
 }
 return a;
}