[PATCH] R600/SI: add pass to mark CF live ranges as non-spillable

Grigori Goronzy greg at chown.ath.cx
Wed Apr 29 13:24:35 PDT 2015


On 2015-04-28 23:19, Tom Stellard wrote:
>> +; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s
>> +; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s
>> +; RUN: llc -march=amdgcn -mcpu=SI < %s | FileCheck -check-prefix=SI 
>> %s
>> +; RUN: llc -march=amdgcn -mcpu=tonga < %s | FileCheck 
>> -check-prefix=SI %s
> 
> These run lines should be merged into only two lines, like this:
> 
> ; RUN: llc -march=amdgcn -mcpu=SI -verify-machineinstrs < %s |
> FileCheck -check-prefix=SI %s
> ; RUN: llc -march=amdgcn -mcpu=tonga -verify-machineinstrs < %s |
> FileCheck -check-prefix=SI %s
> 

If the machine verifier fails, I don't get any useful output to run 
FileCheck on. Those lines test separate issues, and isn't it useful to 
be able to test both independently?. The machine verifier can detect 
non-terminator instructions after a terminator (sometimes spilling 
instructions are inserted after a CBRANCH in the same BB) while the 
FileCheck test verifies restore instruction ordering (restores after 
associated CF instruction are invalid).

> 
> This test is somewhat big, did you try reducing it with bugpoint and
> compiling with -O0 to force spilling?
> 

The test was reduced with bugpoint, but without -O0. If I remember 
correctly, -O0 managed to mostly "work around" the bugs because it 
always forces spilling at specific points.

Best regards
Grigori




More information about the llvm-commits mailing list