id = 2089 title = "aarch64: incorrect emulation of sqshrn instruction" state = "closed" created_at = "2024-01-10T06:30:57.404Z" closed_at = "2024-01-27T13:00:19.852Z" labels = ["accel: TCG", "target: arm", "workflow::Patch available"] url = "https://gitlab.com/qemu-project/qemu/-/issues/2089" host-os = "Debian" host-arch = "x86_64" qemu-version = "qemu-aarch64 version 8.1.2 (Debian 1:8.1.2+ds-1)" guest-os = "same as host" guest-arch = "aarch64" description = """`sqshrn` instruction test fails with qemu-aarch64, but passes on real aarch64 hardware.""" reproduce = """1. Build [inline_asm_tests](https://cs.android.com/android/platform/superproject/main/+/main:frameworks/libs/binary_translation/tests/inline_asm_tests/) and run with qemu-aarch64 2. Observe two failures ``` [ RUN ] Arm64InsnTest.SignedSaturatingShiftRightNarrowInt16x1 frameworks/libs/binary_translation/tests/inline_asm_tests/main_arm64.cc:6697: Failure Expected equality of these values: res1 Which is: 4294967188 MakeUInt128(0x94U, 0U) Which is: 148 [ FAILED ] Arm64InsnTest.SignedSaturatingShiftRightNarrowInt16x1 (5 ms) [ RUN ] Arm64InsnTest.SignedSaturatingRoundingShiftRightNarrowInt16x1 frameworks/libs/binary_translation/tests/inline_asm_tests/main_arm64.cc:6793: Failure Expected equality of these values: res3 Which is: 4294967168 MakeUInt128(0x0000000000000080ULL, 0x0000000000000000ULL) Which is: 128 [ FAILED ] Arm64InsnTest.SignedSaturatingRoundingShiftRightNarrowInt16x1 (2 ms) ```""" additional = """[Direct link to SignedSaturatingShiftRightNarrowInt16x1 test source](https://cs.android.com/android/platform/superproject/main/+/main:frameworks/libs/binary_translation/tests/inline_asm_tests/main_arm64.cc;l=6692;drc=4ee2c3035fa5dc0b7a48b6c6dc498296be071861)"""