]> git.proxmox.com Git - mirror_qemu.git/blame - tests/tcg/sh4/test-subv.c
target/sh4: Fix SUBV opcode
[mirror_qemu.git] / tests / tcg / sh4 / test-subv.c
CommitLineData
e88a856e
PMD
1/* SPDX-License-Identifier: GPL-2.0-or-later */
2
3#include <limits.h>
4#include <stdio.h>
5#include <stdlib.h>
6
7static void subv(const int a, const int b, const int res, const int carry)
8{
9 int o = a, c;
10
11 asm volatile("subv %2,%0\n"
12 "movt %1\n"
13 : "+r"(o), "=r"(c) : "r"(b) : );
14
15 if (c != carry || o != res) {
16 printf("SUBV %d, %d = %d/%d [T = %d/%d]\n", a, b, o, res, c, carry);
17 abort();
18 }
19}
20
21int main(void)
22{
23 subv(INT_MIN, 1, INT_MAX, 1);
24 subv(INT_MAX, -1, INT_MIN, 1);
25 subv(INT_MAX, 1, INT_MAX - 1, 0);
26 subv(0, 1, -1, 0);
27 subv(-1, -1, 0, 0);
28
29 return 0;
30}