mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2025-12-23 09:00:10 +01:00
Revert "ac: generate FMA for inexact instructions for radeonsi"
This reverts commit4b9370cb0f. Fixes:4b9370cb0fCloses: https://gitlab.freedesktop.org/mesa/mesa/-/issues/3429 Reviewed-by: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer@amd.com> Reviewed-by: Bas Nieuwenhuizen <bas@basnieuwenhuizen.nl> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6284>
This commit is contained in:
parent
a407123789
commit
f85294207f
4 changed files with 4 additions and 44 deletions
|
|
@ -17,7 +17,7 @@ traces:
|
||||||
- path: 0ad/0ad.trace
|
- path: 0ad/0ad.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
checksum: bfd97a7190f2b9de24ddfd446fcc4850
|
checksum: c6261e56f37cc5d73b83d493561df646
|
||||||
- path: pathfinder/demo.trace
|
- path: pathfinder/demo.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
|
|
@ -37,7 +37,7 @@ traces:
|
||||||
- path: gputest/pixmark-piano.trace
|
- path: gputest/pixmark-piano.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
checksum: 061226c3fd179c611b8d60acaa44474f
|
checksum: a0e1d6358f76666603b08eab383af080
|
||||||
- path: gputest/triangle.trace
|
- path: gputest/triangle.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
|
|
@ -189,7 +189,7 @@ traces:
|
||||||
- path: gputest/pixmark-piano.trace
|
- path: gputest/pixmark-piano.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
checksum: 061226c3fd179c611b8d60acaa44474f
|
checksum: a0e1d6358f76666603b08eab383af080
|
||||||
- path: gputest/pixmark-volplosion.trace
|
- path: gputest/pixmark-volplosion.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
|
|
@ -197,7 +197,7 @@ traces:
|
||||||
- path: gputest/plot3d.trace
|
- path: gputest/plot3d.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
checksum: 799ce7b2d8050d6ba2e3ae595cf8729e
|
checksum: fd367551aa74e2903e0590a893da01a6
|
||||||
- path: gputest/tessmark.trace
|
- path: gputest/tessmark.trace
|
||||||
expectations:
|
expectations:
|
||||||
- device: gl-radeonsi-stoney
|
- device: gl-radeonsi-stoney
|
||||||
|
|
|
||||||
|
|
@ -114,11 +114,6 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
|
||||||
*/
|
*/
|
||||||
flags.setAllowReciprocal(); /* arcp */
|
flags.setAllowReciprocal(); /* arcp */
|
||||||
|
|
||||||
/* Allow floating-point contraction (e.g. fusing a multiply
|
|
||||||
* followed by an addition into a fused multiply-and-add).
|
|
||||||
*/
|
|
||||||
flags.setAllowContract(); /* contract */
|
|
||||||
|
|
||||||
llvm::unwrap(builder)->setFastMathFlags(flags);
|
llvm::unwrap(builder)->setFastMathFlags(flags);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -126,32 +121,6 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
|
||||||
return builder;
|
return builder;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Return the original state of inexact math. */
|
|
||||||
bool ac_disable_inexact_math(LLVMBuilderRef builder)
|
|
||||||
{
|
|
||||||
auto *b = llvm::unwrap(builder);
|
|
||||||
llvm::FastMathFlags flags = b->getFastMathFlags();
|
|
||||||
|
|
||||||
if (!flags.allowContract())
|
|
||||||
return false;
|
|
||||||
|
|
||||||
flags.setAllowContract(false);
|
|
||||||
b->setFastMathFlags(flags);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ac_restore_inexact_math(LLVMBuilderRef builder, bool value)
|
|
||||||
{
|
|
||||||
auto *b = llvm::unwrap(builder);
|
|
||||||
llvm::FastMathFlags flags = b->getFastMathFlags();
|
|
||||||
|
|
||||||
if (flags.allowContract() == value)
|
|
||||||
return;
|
|
||||||
|
|
||||||
flags.setAllowContract(value);
|
|
||||||
b->setFastMathFlags(flags);
|
|
||||||
}
|
|
||||||
|
|
||||||
LLVMTargetLibraryInfoRef
|
LLVMTargetLibraryInfoRef
|
||||||
ac_create_target_library_info(const char *triple)
|
ac_create_target_library_info(const char *triple)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -109,8 +109,6 @@ LLVMModuleRef ac_create_module(LLVMTargetMachineRef tm, LLVMContextRef ctx);
|
||||||
|
|
||||||
LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
|
LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
|
||||||
enum ac_float_mode float_mode);
|
enum ac_float_mode float_mode);
|
||||||
bool ac_disable_inexact_math(LLVMBuilderRef builder);
|
|
||||||
void ac_restore_inexact_math(LLVMBuilderRef builder, bool value);
|
|
||||||
|
|
||||||
void
|
void
|
||||||
ac_llvm_add_target_dep_function_attr(LLVMValueRef F,
|
ac_llvm_add_target_dep_function_attr(LLVMValueRef F,
|
||||||
|
|
|
||||||
|
|
@ -601,10 +601,6 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
||||||
unsigned num_components = instr->dest.dest.ssa.num_components;
|
unsigned num_components = instr->dest.dest.ssa.num_components;
|
||||||
unsigned src_components;
|
unsigned src_components;
|
||||||
LLVMTypeRef def_type = get_def_type(ctx, &instr->dest.dest.ssa);
|
LLVMTypeRef def_type = get_def_type(ctx, &instr->dest.dest.ssa);
|
||||||
bool saved_inexact = false;
|
|
||||||
|
|
||||||
if (instr->exact)
|
|
||||||
saved_inexact = ac_disable_inexact_math(ctx->ac.builder);
|
|
||||||
|
|
||||||
assert(nir_op_infos[instr->op].num_inputs <= ARRAY_SIZE(src));
|
assert(nir_op_infos[instr->op].num_inputs <= ARRAY_SIZE(src));
|
||||||
switch (instr->op) {
|
switch (instr->op) {
|
||||||
|
|
@ -1192,9 +1188,6 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
||||||
result = ac_to_integer_or_pointer(&ctx->ac, result);
|
result = ac_to_integer_or_pointer(&ctx->ac, result);
|
||||||
ctx->ssa_defs[instr->dest.dest.ssa.index] = result;
|
ctx->ssa_defs[instr->dest.dest.ssa.index] = result;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (instr->exact)
|
|
||||||
ac_restore_inexact_math(ctx->ac.builder, saved_inexact);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void visit_load_const(struct ac_nir_context *ctx,
|
static void visit_load_const(struct ac_nir_context *ctx,
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue