[Mesa-dev] [PATCH 08/18] radeonsi: don't use llvm.AMDIL.fraction for FRC and DFRAC

Marek Olšák maraeo at gmail.com
Fri Jul 31 07:59:19 PDT 2015


On Fri, Jul 31, 2015 at 4:18 PM, Tom Stellard <tom at stellard.net> wrote:
> On Tue, Jul 28, 2015 at 12:05:43PM +0200, Marek Olšák wrote:
>> From: Marek Olšák <marek.olsak at amd.com>
>>
>> There are 2 reasons for this:
>> - LLVM optimization passes can work with floor
>> - there are patterns to select v_fract from floor anyway
>>
>> There is no change in the generated code.
>> ---
>>  src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c | 20 ++++++++++++++++----
>>  1 file changed, 16 insertions(+), 4 deletions(-)
>>
>> diff --git a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> index 319380f..5c08cf5 100644
>> --- a/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> +++ b/src/gallium/drivers/radeon/radeon_setup_tgsi_llvm.c
>> @@ -1170,6 +1170,20 @@ static void emit_dneg(
>>                       emit_data->args[0], "");
>>  }
>>
>> +static void emit_frac(
>> +             const struct lp_build_tgsi_action * action,
>> +             struct lp_build_tgsi_context * bld_base,
>> +             struct lp_build_emit_data * emit_data)
>> +{
>> +     LLVMBuilderRef builder = bld_base->base.gallivm->builder;
>> +
>> +     LLVMValueRef floor = lp_build_intrinsic(builder, "floor", emit_data->dst_type,
>
> The intrinsics name should be "llvm.floor.f32" for float and "llvm.floor.f64"
> for double.
>
> With that fixed, this is:
> Reviewed-by: Tom Stellard <thomas.stellard at amd.com>

Sorry, I have pushed this already. Is it really required to use
"llvm.floor.f*"? We've been using "floor" for FLR forever. We've also
been using "fabs" and "ceil". Are those wrong too?

Marek


More information about the mesa-dev mailing list