diff --git a/src/amd/ci/radv-polaris10-fails.txt b/src/amd/ci/radv-polaris10-fails.txt index 103bd140fe8..d8d3996f950 100644 --- a/src/amd/ci/radv-polaris10-fails.txt +++ b/src/amd/ci/radv-polaris10-fails.txt @@ -48,112 +48,3 @@ dEQP-VK.spirv_assembly.instruction.compute.opfma.fp64.vec3.rte.denorm_flush.dire dEQP-VK.spirv_assembly.instruction.compute.opfma.fp64.vec3.rte.denorm_flush.float_controls,Fail dEQP-VK.spirv_assembly.instruction.compute.opfma.fp64.vec4.rte.denorm_flush.directed,Fail dEQP-VK.spirv_assembly.instruction.compute.opfma.fp64.vec4.rte.denorm_flush.float_controls,Fail - -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rte.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.rtz.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.scalar.undef.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rte.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.rtz.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec2.undef.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rte.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.rtz.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec3.undef.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rte.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.rtz.denorm_preserve.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_flush.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_flush.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_flush.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_none.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_none.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_none.random,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_preserve.directed,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_preserve.float_controls,Fail -dEQP-VK.spirv_assembly.instruction.compute.opfma.fp16.vec4.undef.denorm_preserve.random,Fail diff --git a/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp b/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp index 9aaa64a3f7f..eef5a7c9b91 100644 --- a/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp +++ b/src/amd/compiler/instruction_selection/aco_select_nir_alu.cpp @@ -1927,7 +1927,10 @@ visit_alu_instr(isel_context* ctx, nir_alu_instr* instr) } case nir_op_ffma: { if (dst.regClass() == v2b) { - emit_vop3a_instruction(ctx, instr, aco_opcode::v_fma_f16, dst, false, 3); + if (ctx->options->gfx_level >= GFX9) + emit_vop3a_instruction(ctx, instr, aco_opcode::v_fma_f16, dst, false, 3); + else + emit_vop3a_instruction(ctx, instr, aco_opcode::v_fma_legacy_f16, dst, false, 3); } else if (dst.regClass() == v1 && instr->def.bit_size == 16) { assert(instr->def.num_components == 2);