[llvm] r213551 - R600/SI: Use scratch memory for large private arrays

Matt Arsenault arsenm2 at gmail.com
Fri Aug 1 09:57:31 PDT 2014


On Aug 1, 2014, at 7:41 AM, Tom Stellard <tom at stellard.net> wrote:

> On Fri, Jul 25, 2014 at 10:07:06AM -0700, Matt Arsenault wrote:
>> 
>> On Jul 21, 2014, at 8:45 AM, Tom Stellard <thomas.stellard at amd.com> wrote:
>> 
>>> -; SI-PROMOTE: V_MOVRELS_B32_e32
>>> +; SI-PROMOTE: BUFFER_STORE_SHORT v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], v{{[0-9]+}}, s{{[0-9]+}}
>>> +; SI-PROMOTE: BUFFER_STORE_SHORT v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}], v{{[0-9]+}}, s{{[0-9]+}}
>>> +; SI_PROMOTE: BUFFER_LOAD_SSHORT v{{[0-9]+}}, s[{{[0-9]+:[0-9]+}}] + v{{[0-9]+}}, s{{[0-9]+}}
>>> define void @short_array(i32 addrspace(1)* %out, i32 %index) {
>>> entry:
>>>  %0 = alloca [2 x i16]
>>> @@ -139,8 +137,8 @@ entry:
>>> 
>>> ; R600: MOVA_INT
>> 
>> This adds the broken check line SI_PROMOTE
>> 
>> I’m also now more confused about what situations the register loads are used vs. LDS vs. scratch memory. This test seems like it’s storing to a scratch buffer, but loading from a register
> 
> This is a bug, it should be fixed in the attached patch.
> 
> -Tom
> 
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
> 
> <0001-R600-Move-code-for-generating-REGISTER_LOAD-into-R60.patch>

Would it be better to just add a check for SI around this for now? It should go back to using register loads sometimes eventually



More information about the llvm-commits mailing list