What i want to do is simulate SVE instruction included programs in gem5. But i failed. It stops at a ptrue instruction. below are the conditions of the test.
Program: Tower (which can be get in https://github.com/llvm/llvm-test-suite/tree/main/SingleSource/Benchmarks/Stanford)
Compiler: aarch64-linux-gnu-gcc
Compile flags: -O3 --static -march=armv8-a+sve
Gem5 run command ./build/ARM/gem5.opt -d ./se_results/$$test_prog ./configs/example/arm/starter_se.py --cpu="hpi" $$test_prog
I tried to debug gem5, here are the debug information:
27581250: system.cpu_cluster.cpus.execute.lsq.storeBuffer: StoreBuffer step numUnissuedAccesses: 0
27581250: system.cpu_cluster.cpus.execute: No interrupt controller
27581250: system.cpu_cluster.cpus.execute: [tid:0] thread_interrupted?=0 isInbetweenInsts?=1
27581250: system.cpu_cluster.cpus.execute: Attempting to issue [tid:0]
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 0
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 0 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 1
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 1 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 2
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 2 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 3
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 3 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 4
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 4 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 5
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 5 isn't capable
27581250: system.cpu_cluster.cpus.execute: Trying to issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue) to FU: 6
27581250: system.cpu_cluster.cpus.execute: Can't issue as FU: 6 isn't capable
27581250: system.cpu_cluster.cpus.execute: Didn't issue inst: 0/437.569/2719/11034.12613 pc: 0x400e80 (ptrue)
After a few repetitions, the program gets stuck here.
I think maybe some SVM-based FUs r not enabled which caused this problem. But i don't know how to enable them.