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