cosmopolitan/test/libc/xed/x86ild_popular_cmov_test.c

226 lines
5.3 KiB
C

/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
╞══════════════════════════════════════════════════════════════════════════════╡
│ Copyright 2020 Justine Alexandra Roberts Tunney │
│ │
│ Permission to use, copy, modify, and/or distribute this software for │
│ any purpose with or without fee is hereby granted, provided that the │
│ above copyright notice and this permission notice appear in all copies. │
│ │
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
│ PERFORMANCE OF THIS SOFTWARE. │
╚─────────────────────────────────────────────────────────────────────────────*/
#include "libc/testlib/testlib.h"
#include "test/libc/xed/lib.h"
#include "third_party/xed/x86.h"
TEST(x86ild, test_0F45C2) {
/*
ICLASS: CMOVNZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnz eax, edx
*/
ASSERT_EQ(3, ild(u"☼E┬"));
}
TEST(x86ild, test_0F47F8) {
/*
ICLASS: CMOVNBE
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNBE_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnbe edi, eax
*/
ASSERT_EQ(3, ild(u"☼G°"));
}
TEST(x86ild, test_480F44F0) {
/*
ICLASS: CMOVZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovz rsi, rax
*/
ASSERT_EQ(4, ild(u"H☼D≡"));
}
TEST(x86ild, test_0F44C2) {
/*
ICLASS: CMOVZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovz eax, edx
*/
ASSERT_EQ(3, ild(u"☼D┬"));
}
TEST(x86ild, test_0F47E8) {
/*
ICLASS: CMOVNBE
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNBE_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnbe ebp, eax
*/
ASSERT_EQ(3, ild(u"☼GΦ"));
}
TEST(x86ild, test_0F45C3) {
/*
ICLASS: CMOVNZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnz eax, ebx
*/
ASSERT_EQ(3, ild(u"☼E├"));
}
TEST(x86ild, test_0F44C7) {
/*
ICLASS: CMOVZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovz eax, edi
*/
ASSERT_EQ(3, ild(u"☼D╟"));
}
TEST(x86ild, test_480F44F2) {
/*
ICLASS: CMOVZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovz rsi, rdx
*/
ASSERT_EQ(4, ild(u"H☼D≥"));
}
TEST(x86ild, test_480F44C7) {
/*
ICLASS: CMOVZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovz rax, rdi
*/
ASSERT_EQ(4, ild(u"H☼D╟"));
}
TEST(x86ild, test_440F45F2) {
/*
ICLASS: CMOVNZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnz r14d, edx
*/
ASSERT_EQ(4, ild(u"D☼E≥"));
}
TEST(x86ild, test_440F45F0) {
/*
ICLASS: CMOVNZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnz r14d, eax
*/
ASSERT_EQ(4, ild(u"D☼E≡"));
}
TEST(x86ild, test_0F4DC8) {
/*
ICLASS: CMOVNL
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNL_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnl ecx, eax
*/
ASSERT_EQ(3, ild(u"☼M╚"));
}
TEST(x86ild, test_0F46D8) {
/*
ICLASS: CMOVBE
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVBE_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovbe ebx, eax
*/
ASSERT_EQ(3, ild(u"☼F╪"));
}
TEST(x86ild, test_0F46CF) {
/*
ICLASS: CMOVBE
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVBE_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovbe ecx, edi
*/
ASSERT_EQ(3, ild(u"☼F╧"));
}
TEST(x86ild, test_0F46C1) {
/*
ICLASS: CMOVBE
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVBE_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovbe eax, ecx
*/
ASSERT_EQ(3, ild(u"☼F┴"));
}
TEST(x86ild, test_0F45C6) {
/*
ICLASS: CMOVNZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVNZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovnz eax, esi
*/
ASSERT_EQ(3, ild(u"☼E╞"));
}
TEST(x86ild, test_0F44D0) {
/*
ICLASS: CMOVZ
CATEGORY: CMOV
EXTENSION: BASE
IFORM: CMOVZ_GPRv_GPRv
ISA_SET: CMOV
SHORT: cmovz edx, eax
*/
ASSERT_EQ(3, ild(u"☼D╨"));
}