Branch: refs/heads/main Home: https://github.com/WebKit/WebKit Commit: 24087b31f152b74021e14e012d494ce2d855e0fd https://github.com/WebKit/WebKit/commit/24087b31f152b74021e14e012d494ce2d855e0fd Author: Yusuke Suzuki <ysuz...@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 _______________________________________________ webkit-changes mailing list webkit-changes@lists.webkit.org https://lists.webkit.org/mailman/listinfo/webkit-changes