[webkit-changes] [WebKit/WebKit] 24087b: [JSC] Make X86Assembler AVX functions consistent

Yusuke Suzuki noreply at github.com
Mon Dec 12 00:41:20 PST 2022


  Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 24087b31f152b74021e14e012d494ce2d855e0fd
      https://github.com/WebKit/WebKit/commit/24087b31f152b74021e14e012d494ce2d855e0fd
  Author: Yusuke Suzuki <ysuzuki at apple.com>
  Date:   2022-12-12 (Mon, 12 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] Make X86Assembler AVX functions consistent
https://bugs.webkit.org/show_bug.cgi?id=249070
rdar://103211117

Reviewed by Mark Lam.

This patch makes all AVX functions in X86Assembler consistent and clean.

1. It should be AT&T style.
2. Not use raw method. Always use high-level method for defining code.
3. Add appropriate information of enconding.
4. Add comment about AVX instruction encoding.
5. AVX functions are consolidated into one place.
6. Fixed many arithmetic operations wrongly using commutative version of AVX generation function.

* Source/JavaScriptCore/assembler/MacroAssemblerX86Common.h:
(JSC::MacroAssemblerX86Common::subDouble):
(JSC::MacroAssemblerX86Common::subFloat):
* Source/JavaScriptCore/assembler/MacroAssemblerX86_64.h:
(JSC::MacroAssemblerX86_64::vectorTruncSatUnsignedFloat64):
(JSC::MacroAssemblerX86_64::vectorSshr):
* Source/JavaScriptCore/assembler/X86Assembler.h:
(JSC::X86Assembler::psubd_rr):
(JSC::X86Assembler::movl_rr):
(JSC::X86Assembler::movl_rm):
(JSC::X86Assembler::movl_rm_disp32):
(JSC::X86Assembler::movl_mEAX):
(JSC::X86Assembler::addss_rr):
(JSC::X86Assembler::addss_mr):
(JSC::X86Assembler::addsd_mr):
(JSC::X86Assembler::cvtsi2sd_rr):
(JSC::X86Assembler::cvtsi2ss_rr):
(JSC::X86Assembler::cvtsi2sdq_rr):
(JSC::X86Assembler::cvtsi2ssq_rr):
(JSC::X86Assembler::cvtsi2sdq_mr):
(JSC::X86Assembler::cvtsi2ssq_mr):
(JSC::X86Assembler::cvtsi2sd_mr):
(JSC::X86Assembler::cvtsi2ss_mr):
(JSC::X86Assembler::cvttsd2si_rr):
(JSC::X86Assembler::cvttss2si_rr):
(JSC::X86Assembler::cvttss2siq_rr):
(JSC::X86Assembler::cvtsd2ss_rr):
(JSC::X86Assembler::cvtsd2ss_mr):
(JSC::X86Assembler::cvtss2sd_rr):
(JSC::X86Assembler::cvtss2sd_mr):
(JSC::X86Assembler::cvttsd2siq_rr):
(JSC::X86Assembler::movd_rr):
(JSC::X86Assembler::movddup_rr):
(JSC::X86Assembler::movmskpd_rr):
(JSC::X86Assembler::movq_rr):
(JSC::X86Assembler::movapd_rr):
(JSC::X86Assembler::movaps_rr):
(JSC::X86Assembler::movhlps_rr):
(JSC::X86Assembler::movsd_rr):
(JSC::X86Assembler::movsd_rm):
(JSC::X86Assembler::movss_rm):
(JSC::X86Assembler::movsd_mr):
(JSC::X86Assembler::movss_mr):
(JSC::X86Assembler::movshdup_rr):
(JSC::X86Assembler::movsldup_rr):
(JSC::X86Assembler::mulsd_rr):
(JSC::X86Assembler::mulsd_mr):
(JSC::X86Assembler::mulss_rr):
(JSC::X86Assembler::mulss_mr):
(JSC::X86Assembler::pextrw_irr):
(JSC::X86Assembler::psllq_i8r):
(JSC::X86Assembler::psrld_i8r):
(JSC::X86Assembler::psrlq_i8r):
(JSC::X86Assembler::por_rr):
(JSC::X86Assembler::subsd_rr):
(JSC::X86Assembler::subsd_mr):
(JSC::X86Assembler::subss_rr):
(JSC::X86Assembler::subss_mr):
(JSC::X86Assembler::ucomisd_rr):
(JSC::X86Assembler::ucomisd_mr):
(JSC::X86Assembler::ucomiss_rr):
(JSC::X86Assembler::ucomiss_mr):
(JSC::X86Assembler::divsd_rr):
(JSC::X86Assembler::divsd_mr):
(JSC::X86Assembler::divss_rr):
(JSC::X86Assembler::divss_mr):
(JSC::X86Assembler::andps_rr):
(JSC::X86Assembler::orps_rr):
(JSC::X86Assembler::xorps_rr):
(JSC::X86Assembler::xorpd_rr):
(JSC::X86Assembler::andnpd_rr):
(JSC::X86Assembler::sqrtsd_rr):
(JSC::X86Assembler::sqrtsd_mr):
(JSC::X86Assembler::sqrtss_rr):
(JSC::X86Assembler::sqrtss_mr):
(JSC::X86Assembler::roundss_rr):
(JSC::X86Assembler::roundss_mr):
(JSC::X86Assembler::roundsd_rr):
(JSC::X86Assembler::roundsd_mr):
(JSC::X86Assembler::int3):
(JSC::X86Assembler::isInt3):
(JSC::X86Assembler::ret):
(JSC::X86Assembler::predictNotTaken):
(JSC::X86Assembler::lock):
(JSC::X86Assembler::gs):
(JSC::X86Assembler::cmpxchgb_rm):
(JSC::X86Assembler::cmpxchgw_rm):
(JSC::X86Assembler::cmpxchgl_rm):
(JSC::X86Assembler::cmpxchgq_rm):
(JSC::X86Assembler::xaddb_rm):
(JSC::X86Assembler::xaddw_rm):
(JSC::X86Assembler::xaddl_rm):
(JSC::X86Assembler::xaddq_rm):
(JSC::X86Assembler::lfence):
(JSC::X86Assembler::mfence):
(JSC::X86Assembler::sfence):
(JSC::X86Assembler::rdtsc):
(JSC::X86Assembler::pause):
(JSC::X86Assembler::cpuid):
(JSC::X86Assembler::vunpcklps_rrr):
(JSC::X86Assembler::vpextrb_rr):
(JSC::X86Assembler::vpextrw_rr):
(JSC::X86Assembler::vpextrd_rr):
(JSC::X86Assembler::vpextrq_rr):
(JSC::X86Assembler::vpshufb_rrr):
(JSC::X86Assembler::vshufps_rrr):
(JSC::X86Assembler::vpaddsb_rrr):
(JSC::X86Assembler::vpaddusb_rrr):
(JSC::X86Assembler::vpaddsw_rrr):
(JSC::X86Assembler::vpaddusw_rrr):
(JSC::X86Assembler::vpsubsb_rrr):
(JSC::X86Assembler::vpsubusb_rrr):
(JSC::X86Assembler::vpsubsw_rrr):
(JSC::X86Assembler::vpsubusw_rrr):
(JSC::X86Assembler::vpmaxsb_rrr):
(JSC::X86Assembler::vpmaxsw_rrr):
(JSC::X86Assembler::vpmaxsd_rrr):
(JSC::X86Assembler::vpmaxub_rrr):
(JSC::X86Assembler::vpmaxuw_rrr):
(JSC::X86Assembler::vpmaxud_rrr):
(JSC::X86Assembler::vpminsb_rrr):
(JSC::X86Assembler::vpminsw_rrr):
(JSC::X86Assembler::vpminsd_rrr):
(JSC::X86Assembler::vpminub_rrr):
(JSC::X86Assembler::vpminuw_rrr):
(JSC::X86Assembler::vpminud_rrr):
(JSC::X86Assembler::vpavgb_rrr):
(JSC::X86Assembler::vpavgw_rrr):
(JSC::X86Assembler::vpabsb_rr):
(JSC::X86Assembler::vpabsw_rr):
(JSC::X86Assembler::vpabsd_rr):
(JSC::X86Assembler::vpxor_rrr):
(JSC::X86Assembler::vpsubq_rrr):
(JSC::X86Assembler::vblendvpd_rrrr):
(JSC::X86Assembler::vpmulhrsw_rrr):
(JSC::X86Assembler::vaddps_rrr):
(JSC::X86Assembler::vaddpd_rrr):
(JSC::X86Assembler::vpaddb_rrr):
(JSC::X86Assembler::vpaddw_rrr):
(JSC::X86Assembler::vpaddd_rrr):
(JSC::X86Assembler::vpaddq_rrr):
(JSC::X86Assembler::vsubps_rrr):
(JSC::X86Assembler::vsubpd_rrr):
(JSC::X86Assembler::vpsubb_rrr):
(JSC::X86Assembler::vpsubw_rrr):
(JSC::X86Assembler::vpsubd_rrr):
(JSC::X86Assembler::vmulps_rrr):
(JSC::X86Assembler::vmulpd_rrr):
(JSC::X86Assembler::vpmullw_rrr):
(JSC::X86Assembler::vpmulld_rrr):
(JSC::X86Assembler::vdivps_rrr):
(JSC::X86Assembler::vdivpd_rrr):
(JSC::X86Assembler::vroundps_rr):
(JSC::X86Assembler::vroundpd_rr):
(JSC::X86Assembler::vpmaddwd_rrr):
(JSC::X86Assembler::vpcmpeqb_rrr):
(JSC::X86Assembler::vpcmpeqw_rrr):
(JSC::X86Assembler::vpcmpeqd_rrr):
(JSC::X86Assembler::vpcmpeqq_rrr):
(JSC::X86Assembler::vpcmpgtb_rrr):
(JSC::X86Assembler::vpcmpgtw_rrr):
(JSC::X86Assembler::vpcmpgtd_rrr):
(JSC::X86Assembler::vpcmpgtq_rrr):
(JSC::X86Assembler::vcmpps_rrr):
(JSC::X86Assembler::vcmppd_rrr):
(JSC::X86Assembler::vcvtdq2ps_rr):
(JSC::X86Assembler::vcvtdq2pd_rr):
(JSC::X86Assembler::vmaxpd_rrr):
(JSC::X86Assembler::vminpd_rrr):
(JSC::X86Assembler::vcmpeqpd_rrr):
(JSC::X86Assembler::vcvttpd2dq_rr):
(JSC::X86Assembler::vcvtpd2ps_rr):
(JSC::X86Assembler::vcvtps2pd_rr):
(JSC::X86Assembler::vpacksswb_rrr):
(JSC::X86Assembler::vpackuswb_rrr):
(JSC::X86Assembler::vpackssdw_rrr):
(JSC::X86Assembler::vpackusdw_rrr):
(JSC::X86Assembler::vpmovsxbw):
(JSC::X86Assembler::vpmovzxbw):
(JSC::X86Assembler::vpmovsxwd):
(JSC::X86Assembler::vpmovzxwd):
(JSC::X86Assembler::vpmovsxdq):
(JSC::X86Assembler::vpmovzxdq):
(JSC::X86Assembler::vupckhpd):
(JSC::X86Assembler::vandps_rrr):
(JSC::X86Assembler::vandpd_rrr):
(JSC::X86Assembler::vorps_rrr):
(JSC::X86Assembler::vorpd_rrr):
(JSC::X86Assembler::vxorps_rrr):
(JSC::X86Assembler::vxorpd_rrr):
(JSC::X86Assembler::vandnps_rrr):
(JSC::X86Assembler::vandnpd_rrr):
(JSC::X86Assembler::vpmovmskb_rr):
(JSC::X86Assembler::vmovmskps_rr):
(JSC::X86Assembler::vmovmskpd_rr):
(JSC::X86Assembler::vptest_rr):
(JSC::X86Assembler::vpsllw_rrr):
(JSC::X86Assembler::vpslld_rrr):
(JSC::X86Assembler::vpsllq_rrr):
(JSC::X86Assembler::vpsrlw_rrr):
(JSC::X86Assembler::vpsrld_rrr):
(JSC::X86Assembler::vpsrlq_rrr):
(JSC::X86Assembler::vpsraw_rrr):
(JSC::X86Assembler::vpsrad_rrr):
(JSC::X86Assembler::vpsraq_rrr):
(JSC::X86Assembler::vmovdqa_rr):
(JSC::X86Assembler::vpmaddubsw_rrr):
(JSC::X86Assembler::vpsrld_i8rr):
(JSC::X86Assembler::vpblendw_i8rrr):
(JSC::X86Assembler::vaddsd_rrr):
(JSC::X86Assembler::vaddsd_mr):
(JSC::X86Assembler::vaddss_rrr):
(JSC::X86Assembler::vaddss_mr):
(JSC::X86Assembler::vmovups_mr):
(JSC::X86Assembler::vmovups_rm):
(JSC::X86Assembler::vmulsd_rrr):
(JSC::X86Assembler::vmulsd_mr):
(JSC::X86Assembler::vmulss_rrr):
(JSC::X86Assembler::vmulss_mr):
(JSC::X86Assembler::vsubsd_rrr):
(JSC::X86Assembler::vsubsd_mrr):
(JSC::X86Assembler::vsubss_rrr):
(JSC::X86Assembler::vsubss_mrr):
(JSC::X86Assembler::X86InstructionFormatter::SingleInstructionBufferWriter::memoryModRM):
(JSC::X86Assembler::vsubsd_mr): Deleted.
(JSC::X86Assembler::vsubss_mr): Deleted.

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




More information about the webkit-changes mailing list