frontend/ir: Add opcodes for vector square roots

This commit is contained in:
Lioncash
2019-03-04 12:43:24 -05:00
committed by MerryMage
parent 36027ebef5
commit 5cf1478620
5 changed files with 28 additions and 0 deletions

View File

@@ -1300,6 +1300,18 @@ void EmitX64::EmitFPVectorRSqrtStepFused64(EmitContext& ctx, IR::Inst* inst) {
EmitRSqrtStepFused<64>(code, ctx, inst);
}
void EmitX64::EmitFPVectorSqrt32(EmitContext& ctx, IR::Inst* inst) {
EmitTwoOpVectorOperation<32, DefaultIndexer>(code, ctx, inst, [this](const Xbyak::Xmm& result, const Xbyak::Xmm& operand) {
code.sqrtps(result, operand);
});
}
void EmitX64::EmitFPVectorSqrt64(EmitContext& ctx, IR::Inst* inst) {
EmitTwoOpVectorOperation<64, DefaultIndexer>(code, ctx, inst, [this](const Xbyak::Xmm& result, const Xbyak::Xmm& operand) {
code.sqrtpd(result, operand);
});
}
void EmitX64::EmitFPVectorSub32(EmitContext& ctx, IR::Inst* inst) {
EmitThreeOpVectorOperation<32, DefaultIndexer>(code, ctx, inst, &Xbyak::CodeGenerator::subps);
}