diff --git a/src/amd/compiler/aco_opt_value_numbering.cpp b/src/amd/compiler/aco_opt_value_numbering.cpp index acf032fd1c4..dced78a3729 100644 --- a/src/amd/compiler/aco_opt_value_numbering.cpp +++ b/src/amd/compiler/aco_opt_value_numbering.cpp @@ -175,6 +175,7 @@ struct InstrPred { if (a->opcode == aco_opcode::v_permlane16_b32 || a->opcode == aco_opcode::v_permlanex16_b32 || + a->opcode == aco_opcode::v_permlane64_b32 || a->opcode == aco_opcode::v_readfirstlane_b32) return aV.pass_flags == bV.pass_flags; } diff --git a/src/amd/compiler/aco_optimizer.cpp b/src/amd/compiler/aco_optimizer.cpp index 5ec76c4c32e..a9d6d16728f 100644 --- a/src/amd/compiler/aco_optimizer.cpp +++ b/src/amd/compiler/aco_optimizer.cpp @@ -549,6 +549,7 @@ can_use_VOP3(opt_ctx& ctx, const aco_ptr& instr) instr->opcode != aco_opcode::v_madmk_f16 && instr->opcode != aco_opcode::v_madak_f16 && instr->opcode != aco_opcode::v_fmamk_f32 && instr->opcode != aco_opcode::v_fmaak_f32 && instr->opcode != aco_opcode::v_fmamk_f16 && instr->opcode != aco_opcode::v_fmaak_f16 && + instr->opcode != aco_opcode::v_permlane64_b32 && instr->opcode != aco_opcode::v_readlane_b32 && instr->opcode != aco_opcode::v_writelane_b32 && instr->opcode != aco_opcode::v_readfirstlane_b32; @@ -631,6 +632,7 @@ can_apply_sgprs(opt_ctx& ctx, aco_ptr& instr) instr->opcode != aco_opcode::v_writelane_b32_e64 && instr->opcode != aco_opcode::v_permlane16_b32 && instr->opcode != aco_opcode::v_permlanex16_b32 && + instr->opcode != aco_opcode::v_permlane64_b32 && instr->opcode != aco_opcode::v_interp_p1_f32 && instr->opcode != aco_opcode::v_interp_p2_f32 && instr->opcode != aco_opcode::v_interp_mov_f32 && diff --git a/src/amd/compiler/aco_validate.cpp b/src/amd/compiler/aco_validate.cpp index 51a04c39bf6..b571e8fd09f 100644 --- a/src/amd/compiler/aco_validate.cpp +++ b/src/amd/compiler/aco_validate.cpp @@ -454,7 +454,8 @@ validate_ir(Program* program) continue; } if (instr->opcode == aco_opcode::v_permlane16_b32 || - instr->opcode == aco_opcode::v_permlanex16_b32) { + instr->opcode == aco_opcode::v_permlanex16_b32 || + instr->opcode == aco_opcode::v_permlane64_b32) { check(i != 0 || op.isOfType(RegType::vgpr), "Operand 0 of v_permlane must be VGPR", instr.get()); check(i == 0 || op.isOfType(RegType::sgpr) || op.isConstant(),