mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-08 04:48:08 +02: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> (cherry picked from commitf85294207f)
This commit is contained in:
parent
6781cc30cb
commit
b8127c7cfb
4 changed files with 1 additions and 41 deletions
|
|
@ -2425,7 +2425,7 @@
|
|||
"description": "Revert \"ac: generate FMA for inexact instructions for radeonsi\"",
|
||||
"nominated": true,
|
||||
"nomination_type": 1,
|
||||
"resolution": 0,
|
||||
"resolution": 1,
|
||||
"master_sha": null,
|
||||
"because_sha": "4b9370cb0f3a2d9030e827f847f66bdefeaf08fd"
|
||||
},
|
||||
|
|
|
|||
|
|
@ -96,11 +96,6 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
|
|||
*/
|
||||
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);
|
||||
break;
|
||||
}
|
||||
|
|
@ -108,32 +103,6 @@ LLVMBuilderRef ac_create_builder(LLVMContextRef ctx,
|
|||
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
|
||||
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,
|
||||
enum ac_float_mode float_mode);
|
||||
bool ac_disable_inexact_math(LLVMBuilderRef builder);
|
||||
void ac_restore_inexact_math(LLVMBuilderRef builder, bool value);
|
||||
|
||||
void
|
||||
ac_llvm_add_target_dep_function_attr(LLVMValueRef F,
|
||||
|
|
|
|||
|
|
@ -589,10 +589,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 src_components;
|
||||
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));
|
||||
switch (instr->op) {
|
||||
|
|
@ -1199,9 +1195,6 @@ static void visit_alu(struct ac_nir_context *ctx, const nir_alu_instr *instr)
|
|||
result = ac_to_integer_or_pointer(&ctx->ac, 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,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue