/* SPDX-License-Identifier: GPL-2.0-or-later */ | |
#include <limits.h> | |
#include <stdio.h> | |
#include <stdlib.h> | |
static void addv(const int a, const int b, const int res, const int carry) | |
{ | |
int o = a, c; | |
asm volatile("addv %2,%0\n" | |
"movt %1\n" | |
: "+r"(o), "=r"(c) : "r"(b) : ); | |
if (c != carry || o != res) { | |
printf("ADDV %d, %d = %d/%d [T = %d/%d]\n", a, b, o, res, c, carry); | |
abort(); | |
} | |
} | |
int main(void) | |
{ | |
addv(INT_MAX, 1, INT_MIN, 1); | |
addv(INT_MAX - 1, 1, INT_MAX, 0); | |
return 0; | |
} |