| 1 | /* SPDX-License-Identifier: GPL-2.0-or-later */ |
| 2 | /* See https://gitlab.com/qemu-project/qemu/-/issues/2248 */ |
| 3 | |
| 4 | #include <assert.h> |
| 5 | |
| 6 | __attribute__((noinline)) |
| 7 | long test(long x, long y, long sh) |
| 8 | { |
| 9 | long r; |
| 10 | asm("cmp %1, %2\n\t" |
| 11 | "cset x12, lt\n\t" |
| 12 | "and w11, w12, #0xff\n\t" |
| 13 | "cmp w11, #0\n\t" |
| 14 | "csetm x14, ne\n\t" |
| 15 | "lsr x13, x14, %3\n\t" |
| 16 | "sxtb %0, w13" |
| 17 | : "=r"(r) |
| 18 | : "r"(x), "r"(y), "r"(sh) |
| 19 | : "x11", "x12", "x13", "x14"); |
| 20 | return r; |
| 21 | } |
| 22 | |
| 23 | int main() |
| 24 | { |
| 25 | long r = test(0, 1, 2); |
| 26 | assert(r == -1); |
| 27 | return 0; |
| 28 | } |