[webkit-changes] [WebKit/WebKit] cd2006: [JSC] Rewrite every SSE functions with AVX

Yusuke Suzuki noreply at github.com
Tue Dec 13 21:50:35 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: cd20066f121f8af3d4a191a30ae93dc06cb30795
      https://github.com/WebKit/WebKit/commit/cd20066f121f8af3d4a191a30ae93dc06cb30795
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2022-12-13 (Tue, 13 Dec 2022)

  Changed paths:
    M Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h
    M Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h
    M Source/JavaScriptCore/assembler/X86Assembler.h

  Log Message:
  -----------
  [JSC] Rewrite every SSE functions with AVX
https://bugs.webkit.org/show_bug.cgi?id=249281
rdar://103330419

Reviewed by Michael Saboff.

This patch rewrites every FloatingPoint code generation with AVX instead of SSE.
This paves the way to reducing AVX <-> SSE penalty once AVX SIMD is enabled.

* Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::sqrtDouble):
(JSC::MacroAssemblerX86Common::sqrtFloat):
(JSC::MacroAssemblerX86Common::absDouble):
(JSC::MacroAssemblerX86Common::negateDouble):
(JSC::MacroAssemblerX86Common::ceilDouble):
(JSC::MacroAssemblerX86Common::ceilFloat):
(JSC::MacroAssemblerX86Common::floorDouble):
(JSC::MacroAssemblerX86Common::floorFloat):
(JSC::MacroAssemblerX86Common::roundTowardNearestIntDouble):
(JSC::MacroAssemblerX86Common::roundTowardNearestIntFloat):
(JSC::MacroAssemblerX86Common::roundTowardZeroDouble):
(JSC::MacroAssemblerX86Common::roundTowardZeroFloat):
(JSC::MacroAssemblerX86Common::moveDouble):
(JSC::MacroAssemblerX86Common::loadDouble):
(JSC::MacroAssemblerX86Common::loadFloat):
(JSC::MacroAssemblerX86Common::storeDouble):
(JSC::MacroAssemblerX86Common::storeFloat):
(JSC::MacroAssemblerX86Common::convertDoubleToFloat):
(JSC::MacroAssemblerX86Common::convertFloatToDouble):
(JSC::MacroAssemblerX86Common::divDouble):
(JSC::MacroAssemblerX86Common::divFloat):
(JSC::MacroAssemblerX86Common::andDouble):
(JSC::MacroAssemblerX86Common::andFloat):
(JSC::MacroAssemblerX86Common::orDouble):
(JSC::MacroAssemblerX86Common::orFloat):
(JSC::MacroAssemblerX86Common::xorDouble):
(JSC::MacroAssemblerX86Common::xorFloat):
(JSC::MacroAssemblerX86Common::convertInt32ToDouble):
(JSC::MacroAssemblerX86Common::convertInt32ToFloat):
(JSC::MacroAssemblerX86Common::branchDouble):
(JSC::MacroAssemblerX86Common::branchFloat):
(JSC::MacroAssemblerX86Common::compareDouble):
(JSC::MacroAssemblerX86Common::compareFloat):
(JSC::MacroAssemblerX86Common::branchTruncateDoubleToInt32):
(JSC::MacroAssemblerX86Common::truncateDoubleToInt32):
(JSC::MacroAssemblerX86Common::truncateFloatToInt32):
(JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32):
(JSC::MacroAssemblerX86Common::moveZeroToDouble):
(JSC::MacroAssemblerX86Common::branchDoubleNonZero):
(JSC::MacroAssemblerX86Common::branchDoubleZeroOrNaN):
(JSC::MacroAssemblerX86Common::move32ToFloat):
(JSC::MacroAssemblerX86Common::moveFloatTo32):
(JSC::MacroAssemblerX86Common::moveConditionallyDouble):
(JSC::MacroAssemblerX86Common::moveConditionallyFloat):
(JSC::MacroAssemblerX86Common::lshiftPacked): Deleted.
(JSC::MacroAssemblerX86Common::rshiftPacked): Deleted.
(JSC::MacroAssemblerX86Common::orPacked): Deleted.
* Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::addDouble):
(JSC::MacroAssemblerX86_64::convertInt32ToDouble):
(JSC::MacroAssemblerX86_64::move32ToFloat):
(JSC::MacroAssemblerX86_64::move64ToDouble):
(JSC::MacroAssemblerX86_64::moveDoubleTo64):
(JSC::MacroAssemblerX86_64::moveVector):
(JSC::MacroAssemblerX86_64::truncateDoubleToUint32):
(JSC::MacroAssemblerX86_64::truncateDoubleToInt64):
(JSC::MacroAssemblerX86_64::truncateDoubleToUint64):
(JSC::MacroAssemblerX86_64::truncateFloatToUint32):
(JSC::MacroAssemblerX86_64::truncateFloatToInt64):
(JSC::MacroAssemblerX86_64::truncateFloatToUint64):
(JSC::MacroAssemblerX86_64::convertInt64ToDouble):
(JSC::MacroAssemblerX86_64::convertInt64ToFloat):
(JSC::MacroAssemblerX86_64::convertUInt64ToDouble):
(JSC::MacroAssemblerX86_64::convertUInt64ToFloat):
* Source/JavaScriptCore/assembler/X86Assembler.h:
(JSC::X86Assembler::movaps_rr):
(JSC::X86Assembler::movss_mr):
(JSC::X86Assembler::movss_rm):
(JSC::X86Assembler::sqrtss_rr):
(JSC::X86Assembler::sqrtss_mr):
(JSC::X86Assembler::vdivsd_rrr):
(JSC::X86Assembler::vdivsd_mrr):
(JSC::X86Assembler::vdivss_rrr):
(JSC::X86Assembler::vdivss_mrr):
(JSC::X86Assembler::vroundsd_i8rrr):
(JSC::X86Assembler::vroundsd_i8mrr):
(JSC::X86Assembler::vroundss_i8rrr):
(JSC::X86Assembler::vroundss_i8mrr):
(JSC::X86Assembler::vmovd_rr):
(JSC::X86Assembler::vmovq_rr):
(JSC::X86Assembler::vmovups_mr):
(JSC::X86Assembler::vmovups_rm):
(JSC::X86Assembler::vmovaps_rr):
(JSC::X86Assembler::vmovaps_mr):
(JSC::X86Assembler::vmovaps_rm):
(JSC::X86Assembler::vmovsd_mr):
(JSC::X86Assembler::vmovsd_rm):
(JSC::X86Assembler::vmovss_mr):
(JSC::X86Assembler::vmovss_rm):
(JSC::X86Assembler::vsqrtsd_rrr):
(JSC::X86Assembler::vsqrtsd_mrr):
(JSC::X86Assembler::vsqrtss_rrr):
(JSC::X86Assembler::vsqrtss_mrr):
(JSC::X86Assembler::vcvtsd2ss_rrr):
(JSC::X86Assembler::vcvtsd2ss_mrr):
(JSC::X86Assembler::vcvtss2sd_rrr):
(JSC::X86Assembler::vcvtss2sd_mrr):
(JSC::X86Assembler::vcvtsi2sd_rrr):
(JSC::X86Assembler::vcvtsi2sd_mrr):
(JSC::X86Assembler::vcvtsi2ss_rrr):
(JSC::X86Assembler::vcvtsi2ss_mrr):
(JSC::X86Assembler::vcvttsd2si_rr):
(JSC::X86Assembler::vcvttss2si_rr):
(JSC::X86Assembler::vcvttsd2siq_rr):
(JSC::X86Assembler::vcvttss2siq_rr):
(JSC::X86Assembler::vcvtsi2sdq_rrr):
(JSC::X86Assembler::vcvtsi2sdq_mrr):
(JSC::X86Assembler::vcvtsi2ssq_rrr):
(JSC::X86Assembler::vcvtsi2ssq_mrr):
(JSC::X86Assembler::vucomisd_rr):
(JSC::X86Assembler::vucomisd_mr):
(JSC::X86Assembler::vucomiss_rr):
(JSC::X86Assembler::vucomiss_mr):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):

Canonical link: https://commits.webkit.org/257831@main




More information about the webkit-changes mailing list