Francisco Jerez <curroje...@riseup.net> writes:

> Jan Vesely <jan.ves...@rutgers.edu> writes:
>
>> v2: use a new variable for aligned size
>>     add comment
>>     make both vars const
>>     only use the aligned value in argument constructors
>>     fix comment typo
>>
>> Signed-off-by: Jan Vesely <jan.ves...@rutgers.edu>
>
> Looks good to me, thanks,
> Reviewed-by: Francisco Jerez <curroje...@riseup.net>
>

Thanks, pushed:
http://cgit.freedesktop.org/mesa/mesa/commit/?id=7b11c97d31ea9ebdf5d4b89e60bcc96d256aa7a4

>> ---
>>  .../state_trackers/clover/llvm/invocation.cpp      | 23 
>> +++++++++++++++-------
>>  1 file changed, 16 insertions(+), 7 deletions(-)
>>
>> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp 
>> b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> index a81bdf8..29d2986 100644
>> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> @@ -64,6 +64,7 @@
>>  
>>  #include "pipe/p_state.h"
>>  #include "util/u_memory.h"
>> +#include "util/u_math.h"
>>  
>>  #include <iostream>
>>  #include <iomanip>
>> @@ -308,11 +309,19 @@ namespace {
>>  #endif
>>  
>>              llvm::Type *arg_type = arg.getType();
>> -            unsigned arg_size = TD.getTypeStoreSize(arg_type);
>> +            const unsigned arg_store_size = TD.getTypeStoreSize(arg_type);
>> +
>> +            // OCL specs Ch. 6.1.5: "A built-in data type that is not a 
>> power
>> +            // of two bytes in size must be aligned to the next larger 
>> power of
>> +            // two."
>> +            // We need this alignment for three element vectors, which
>> +            // can have non-power-of-2 size.
>> +            const unsigned arg_api_size =
>> +               util_next_power_of_two(arg_store_size);
>>  
>>              llvm::Type *target_type = arg_type->isIntegerTy() ?
>> -               TD.getSmallestLegalIntType(mod->getContext(), arg_size * 8) :
>> -               arg_type;
>> +               TD.getSmallestLegalIntType(mod->getContext(), arg_store_size 
>> * 8)
>> +               : arg_type;
>>              unsigned target_size = TD.getTypeStoreSize(target_type);
>>              unsigned target_align = TD.getABITypeAlignment(target_type);
>>  
>> @@ -326,19 +335,19 @@ namespace {
>>                 if (address_space == 
>> address_spaces[clang::LangAS::opencl_local
>>                                                       - 
>> clang::LangAS::Offset]) {
>>                    args.push_back(module::argument(module::argument::local,
>> -                                                  arg_size, target_size,
>> +                                                  arg_api_size, target_size,
>>                                                    target_align,
>>                                                    
>> module::argument::zero_ext));
>>                 } else {
>>                    // XXX: Correctly handle constant address space.  There 
>> is no
>>                    // way for r600g to pass a handle for constant buffers 
>> back
>>                    // to clover like it can for global buffers, so
>> -                  // creating constant arguements will break r600g.  For 
>> now,
>> +                  // creating constant arguments will break r600g.  For now,
>>                    // continue treating constant buffers as global buffers
>>                    // until we can come up with a way to create handles for
>>                    // constant buffers.
>>                    args.push_back(module::argument(module::argument::global,
>> -                                                  arg_size, target_size,
>> +                                                  arg_api_size, target_size,
>>                                                    target_align,
>>                                                    
>> module::argument::zero_ext));
>>                }
>> @@ -352,7 +361,7 @@ namespace {
>>                     module::argument::zero_ext);
>>  
>>                 args.push_back(
>> -                  module::argument(module::argument::scalar, arg_size,
>> +                  module::argument(module::argument::scalar, arg_api_size,
>>                                     target_size, target_align, ext_type));
>>              }
>>           }
>> -- 
>> 1.9.0

Attachment: pgphvLiY63Q2Y.pgp
Description: PGP signature

_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to