From d6f7739bfc25a8d9e970e50a3a7d46ac503d4f75 Mon Sep 17 00:00:00 2001 From: Ekaitz Zarraga Date: Tue, 29 Aug 2023 20:15:03 +0200 Subject: [PATCH] lib: tests: Add 17-compare-rotated. * lib/tests/scaffold/17-compare-rotated.c: Add file. * build-aux/check-mescc.sh (mes_tests): Add it. --- build-aux/check-mescc.sh | 1 + lib/tests/scaffold/17-compare-rotated.c | 41 +++++++++++++++++++++++++ 2 files changed, 42 insertions(+) create mode 100644 lib/tests/scaffold/17-compare-rotated.c diff --git a/build-aux/check-mescc.sh b/build-aux/check-mescc.sh index b8dfc6d3..0ac7216c 100755 --- a/build-aux/check-mescc.sh +++ b/build-aux/check-mescc.sh @@ -64,6 +64,7 @@ lib/tests/scaffold/17-compare-or.c lib/tests/scaffold/17-compare-and-or.c lib/tests/scaffold/17-compare-assign.c lib/tests/scaffold/17-compare-call.c +lib/tests/scaffold/17-compare-rotated.c lib/tests/scaffold/18-assign-shadow.c lib/tests/scaffold/20-while.c lib/tests/scaffold/21-char-array-simple.c diff --git a/lib/tests/scaffold/17-compare-rotated.c b/lib/tests/scaffold/17-compare-rotated.c new file mode 100644 index 00000000..9c2eb73d --- /dev/null +++ b/lib/tests/scaffold/17-compare-rotated.c @@ -0,0 +1,41 @@ +/* -*-comment-start: "//";comment-end:""-*- + * GNU Mes --- Maxwell Equations of Software + * Copyright © 2023 Ekaitz Zarraga + * + * This file is part of GNU Mes. + * + * GNU Mes is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 3 of the License, or (at + * your option) any later version. + * + * GNU Mes is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNU Mes. If not, see . + */ + +#include +#include + +int +main () +{ + uint32_t r = 0xFFFFFFFF; + r = r <<30 >>30; // higher 30 bits are cleared because they leave + // the register to the left + if (r != 3) + return 1; + + uint16_t s = 0xFFFF; + s = s <<14 >>14; // s<<14 is promoted to int, the higher bits are + // not cleared, because there's space in the + // register + if (s != 0xFFFF) + return 2; + + return 0; +}