blob: f60c988d52bff1e1642ed8db375df5d31e80b1f1 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
|
graphic: 0.981
semantic: 0.928
performance: 0.922
peripherals: 0.908
device: 0.901
virtual: 0.900
hypervisor: 0.884
architecture: 0.882
PID: 0.881
ppc: 0.880
network: 0.879
TCG: 0.873
socket: 0.872
register: 0.868
debug: 0.854
risc-v: 0.845
x86: 0.845
arm: 0.842
permissions: 0.834
kernel: 0.830
KVM: 0.818
vnc: 0.816
user-level: 0.815
VMM: 0.810
assembly: 0.787
boot: 0.785
files: 0.768
i386: 0.726
mistranslation: 0.579
Test programs that use the vextractbm, vextracthm, vextractwm, or vextractdm instructions fail on qemu-ppc64 (but not qemu-ppc64le)
Description of problem:
Some of the test programs that use the vextractbm, vextracthm, vextractwm, or vextractdm instructions fail on qemu-ppc64 (but not qemu-ppc64le).
Steps to 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```
|