id = 1536 title = "Test programs that use the vextractbm, vextracthm, vextractwm, or vextractdm instructions fail on qemu-ppc64 (but not qemu-ppc64le)" state = "closed" created_at = "2023-03-07T18:45:48.516Z" closed_at = "2023-05-06T07:10:19.487Z" labels = ["accel: TCG", "target: ppc"] url = "https://gitlab.com/qemu-project/qemu/-/issues/1536" host-os = "Ubuntu 22.04" host-arch = "x86_64" qemu-version = "7.2.0" guest-os = "Ubuntu 22.04" guest-arch = "ppc64" description = """Some of the test programs that use the vextractbm, vextracthm, vextractwm, or vextractdm instructions fail on qemu-ppc64 (but not qemu-ppc64le).""" reproduce = """1. Download the vsx_mask_extract_runnable_test_030723.c test program from https://gist.githubusercontent.com/johnplatts/db0e9f6683e85e9288fde5c031b3c0e5/raw/ccfb8170f3e613398750830451eebb362875493d/vsx_mask_extract_runnable_test_030723.c. 2. Install the ppc64 gcc cross-compiler and required libraries, which can be done using the ```sudo apt install build-essential gdb-multiarch g++-12-powerpc64-linux-gnu binutils-powerpc64-linux-gnu binutils-powerpc64-linux-gnu-dbg libc6-ppc64-cross libstdc++6-ppc64-cross``` command on Ubuntu 22.04. 3. Compile the vsx_mask_extract_runnable_test_030723.c test program downloaded in step 1 using the ```powerpc64-linux-gnu-gcc-12``` cross-compiler with the ```-mcpu=power10``` option. 4. Execute the program compiled in step 3 using the ```QEMU_LD_PREFIX=/usr/powerpc64-linux-gnu qemu-ppc64 -cpu power10 ./vsx_mask_extract_runnable_test_030723``` command. The issue can also be reproduced by compiling Google Highway and running its unit tests as follows: 1. Clone the Google Highway git repository by running the ```git clone https://github.com/google/highway.git google_highway``` command. 2. Create a ```hwy_ppcbe10_build``` directory inside of the ```google_highway``` directory created in step #1. 3. In the ```hwy_ppc10be_build``` directory created in the previous step, execute the following commands: - ```CC=powerpc64-linux-gnu-gcc-12 CXX=powerpc64-linux-gnu-g++-12 cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER_TARGET="powerpc64-linux-gnu" -DCMAKE_CXX_COMPILER_TARGET="powerpc64-linux-gnu" -DCMAKE_CROSSCOMPILING=true -DCMAKE_CROSSCOMPILING_EMULATOR='/usr/local/bin/qemu-ppc64;-cpu;power10' -DCMAKE_C_FLAGS='-mcpu=power10 -DHWY_DISABLED_TARGETS=6918373452571213824' -DCMAKE_CXX_FLAGS='-mcpu=power10 -DHWY_DISABLED_TARGETS=6918373452571213824'``` - ```QEMU_LD_PREFIX=/usr/powerpc64-linux-gnu make``` - ```QEMU_LD_PREFIX=/usr/powerpc64-linux-gnu ctest -j```""" additional = "n/a"