On Fri, Jul 31, 2015 at 04:59:19PM +0200, Marek Olšák wrote: > On Fri, Jul 31, 2015 at 4:18 PM, Tom Stellard <t...@stellard.net> wrote: > > On Tue, Jul 28, 2015 at 12:05:43PM +0200, Marek Olšák wrote: > >> From: Marek Olšák <marek.ol...@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.stell...@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? >
It is better to use the intrinsics: (i.e. llvm.*) functions, because they don't have side-effects like the libm calls, so they can be optimized better. -Tom > Marek _______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-dev