]> git.pld-linux.org Git - packages/firefox.git/commitdiff
up to 112.0
authorJan Palus <atler@pld-linux.org>
Tue, 11 Apr 2023 14:48:34 +0000 (16:48 +0200)
committerJan Palus <atler@pld-linux.org>
Tue, 11 Apr 2023 14:48:34 +0000 (16:48 +0200)
firefox.spec
xsimd.patch [deleted file]

index a805d62b4950d5301b307a995756ed91baa48df6..bb552b53f0e96841b0ad92f30b98a36d54fddfeb 100644 (file)
@@ -44,219 +44,218 @@ curl -s $U | sed -ne 's,.*href="\([^"]\+\)/".*,'"$U"'xpi/\1.xpi,p'
 %endif
 
 %define                nspr_ver        4.32
-%define                nss_ver         3.88
+%define                nss_ver         3.89
 
 Summary:       Firefox web browser
 Summary(hu.UTF-8):     Firefox web böngésző
 Summary(pl.UTF-8):     Firefox - przeglądarka WWW
 Name:          firefox
-Version:       111.0.1
+Version:       112.0
 Release:       1
 License:       MPL v2.0
 Group:         X11/Applications/Networking
 Source0:       https://releases.mozilla.org/pub/firefox/releases/%{version}/source/firefox-%{version}.source.tar.xz
-# Source0-md5: 4c259560dfb941e087c1184af4612331
+# Source0-md5: b9ee4f7f5fbac81a5373a0c8b626879e
 Source3:       %{name}.desktop
 Source4:       %{name}.sh
 Source5:       vendor.js
 Source6:       vendor-ac.js
 Source100:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ach.xpi
-# Source100-md5:       2dd8d06418afcca121fb2e00677044c6
+# Source100-md5:       e11acec459dcb0394d4c65e644d1f2d1
 Source101:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/af.xpi
-# Source101-md5:       b16f4fed3bd0d030252d85c77e84a125
+# Source101-md5:       1655ba7a292191d7ca3677fc6e398878
 Source102:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/an.xpi
-# Source102-md5:       001ec8775e2dd6980e9976086d47a496
+# Source102-md5:       ceae5d967e2ccba668d4566c27d05ade
 Source103:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ar.xpi
-# Source103-md5:       a93f5a37112b111e642279f6bb3e7a48
+# Source103-md5:       fe82e8de0ea83ffa20bb74ab1cc8eb34
 Source104:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ast.xpi
-# Source104-md5:       7b57129c8511ab6a212e7cc576571586
+# Source104-md5:       cda16f0560aef07990c3a5d556e64eb3
 Source105:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/az.xpi
-# Source105-md5:       106b9d95b88dddbd976882f3f1b4fab3
+# Source105-md5:       f5b665b600367cc070da4fc3c82df49e
 Source106:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/be.xpi
-# Source106-md5:       ab01d42e9cfdff1e35cbcfe609facd81
+# Source106-md5:       0000de7983c262de8ec0d86be3a46861
 Source107:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/bg.xpi
-# Source107-md5:       48b13688ea02deb0cc96cd2715f7968e
+# Source107-md5:       ce8090f8b1a66c517e01f41e2e5c0ea6
 Source108:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/bn.xpi
-# Source108-md5:       565aca53b4e451c6aca4e3e2aafaae4d
+# Source108-md5:       40667123adb6e4da56f66d4d51b85b4e
 Source109:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/br.xpi
-# Source109-md5:       b8616a751115abff9e2955da618506c1
+# Source109-md5:       6412549286b2b895be11a03eb48d3fae
 Source110:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/bs.xpi
-# Source110-md5:       f41dd1851018ed00b76a645c45e10abf
+# Source110-md5:       0d5d0e41a638da24359cf764e301788e
 Source111:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ca.xpi
-# Source111-md5:       4ee40a61b723c85fcf3ca4bfefa9c352
+# Source111-md5:       a01aedf9af0738f82be4b351a020e3f8
 Source112:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ca-valencia.xpi
-# Source112-md5:       39ea39b8ab21f12fe672a4111f3699e0
+# Source112-md5:       43aa58469cc1ad67d6689fba0201fa0d
 Source113:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/cak.xpi
-# Source113-md5:       daf6f57513881f150768f4010efdf9ff
+# Source113-md5:       d790048cc62882e717c11fc182328104
 Source114:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/cs.xpi
-# Source114-md5:       3709980781daef450fa1d73075ef9570
+# Source114-md5:       f05dfc8d7eefc5448d395cb43cb6db3e
 Source115:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/cy.xpi
-# Source115-md5:       2d3fb752f2a9b78202001c6286920a27
+# Source115-md5:       2d02db89f572ce3b457b1a2a7c1e517f
 Source116:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/da.xpi
-# Source116-md5:       60d8f798c7978e425a0b45641ca40c23
+# Source116-md5:       7a9771f7393ce7edeab363af8ddc46e7
 Source117:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/de.xpi
-# Source117-md5:       658fc359125d9dab7ef059a6de94c5ae
+# Source117-md5:       fc12b570fbd78f387feb6f5b192e9db9
 Source118:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/dsb.xpi
-# Source118-md5:       e7c0867d2b619694d8076d1befc78b4a
+# Source118-md5:       fedd83a72f98c6dfc183a09f5dff0d25
 Source119:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/el.xpi
-# Source119-md5:       c045e5402aa56841ec7d8c3c115f5695
+# Source119-md5:       9c8c5255448fcc200b307efb7991944d
 Source120:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/en-CA.xpi
-# Source120-md5:       99c43e68d0ab72814dc1e5dd8089d291
+# Source120-md5:       43ce9eb5e8af2d71ce314a232769bb59
 Source121:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/en-GB.xpi
-# Source121-md5:       182f0f4ac816d7fedcba7db689ed2480
+# Source121-md5:       a7093acf8751a15b6f0b4375c145da6c
 Source122:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/en-US.xpi
-# Source122-md5:       44b0f6d4c651bfe01e5079d8c9b7adbb
+# Source122-md5:       4db0a1e6e56e4caa4d55591eecb47ed7
 Source123:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/eo.xpi
-# Source123-md5:       276edc337ab715576fae4fb43364dd1c
+# Source123-md5:       6828a8ff59bcffb40f1ba28ad55cb264
 Source124:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/es-AR.xpi
-# Source124-md5:       f5c330de01ab13915d3f4aa9669fd71e
+# Source124-md5:       b76e6d38a6bc5c694574593419506fd9
 Source125:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/es-CL.xpi
-# Source125-md5:       a88601a7874db082d7a2fef6ed5be22c
+# Source125-md5:       03b59f88976c9fb7f58895edd52ee118
 Source126:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/es-ES.xpi
-# Source126-md5:       04339dc8ae3d2cc276b1d369666d0656
+# Source126-md5:       2ac02aba2f65e51e82575ec03a0a4bee
 Source127:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/es-MX.xpi
-# Source127-md5:       d9035d33f3c93defe29dc8f785058caf
+# Source127-md5:       cf947ced8cb533832d5495a2b1630f4f
 Source128:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/et.xpi
-# Source128-md5:       ae17009cf373bde914e3c8e35f457489
+# Source128-md5:       f1d0a95e5df960a169b9b36c119af534
 Source129:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/eu.xpi
-# Source129-md5:       8b7d3f29e9fcf994b33de955bb50e022
+# Source129-md5:       46f51a4f388692c6e58c049a9cdd2314
 Source130:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/fa.xpi
-# Source130-md5:       aa4397e1a0a01ab47a6f02cb02113ce9
+# Source130-md5:       50e58d6dfed2143694d6b0112c2267e1
 Source131:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ff.xpi
-# Source131-md5:       a860234dd5026856f538b28ee10178dd
+# Source131-md5:       5cd29a76efb15532a535955411182782
 Source132:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/fi.xpi
-# Source132-md5:       96defec808bfc71f1d6b8c3695683e74
+# Source132-md5:       ac7ff71859ba376bf849225d8f0921fc
 Source133:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/fr.xpi
-# Source133-md5:       65b4b5ba25eaa0111c7c1dbed2ae013e
+# Source133-md5:       d86f120b15c4230e69e18278cfbff86f
 Source134:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/fy-NL.xpi
-# Source134-md5:       688519fb3e473343b501c387685111e3
+# Source134-md5:       01ac402eb218312f83c3118e4b2c22c1
 Source135:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ga-IE.xpi
-# Source135-md5:       3bf0fc33edd7c2e1cd69c2e4ae9a5ed0
+# Source135-md5:       f8ced1f365fe10c0fabb85505166a233
 Source136:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/gd.xpi
-# Source136-md5:       86ea45a7c46a1beb2688380a8263bcba
+# Source136-md5:       c958561223ab414c50ef5ba54f1ef8ca
 Source137:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/gl.xpi
-# Source137-md5:       c731877e4d03e00e4adc1d9724ca9b04
+# Source137-md5:       67ae082fa69d19f0fd2f52e9ce0612b6
 Source138:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/gn.xpi
-# Source138-md5:       4ef5119c45c00b4565d8339876d1ef68
+# Source138-md5:       bbbc3a03b56098146301d32a9c2bf212
 Source139:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/gu-IN.xpi
-# Source139-md5:       b89446b5a80089ccc61a5720167c171e
+# Source139-md5:       8a981b3d64550679d90de92f73ec6b8b
 Source140:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/he.xpi
-# Source140-md5:       dff09b71647ee523d51af5250a027027
+# Source140-md5:       2fc221d9966c45254050092eed60ff61
 Source141:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/hi-IN.xpi
-# Source141-md5:       60cf8e12815b607a083d3b9ba32713cd
+# Source141-md5:       06522cd68d51ea97e21834d24fd6be69
 Source142:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/hr.xpi
-# Source142-md5:       e4cf0689e93865b1e40fd61ea4b2c832
+# Source142-md5:       adb3a7ac9b3dc864cfda782896057bfe
 Source143:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/hsb.xpi
-# Source143-md5:       0bb4f1245c6b39f150247ac1f4c307fe
+# Source143-md5:       46a98a1d4c4f05fd22a62c7784e59715
 Source144:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/hu.xpi
-# Source144-md5:       72e07668f0335101fc22e5937ee14764
+# Source144-md5:       056ac9f75613baaddc72f0ef55128973
 Source145:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/hy-AM.xpi
-# Source145-md5:       e24f9034223d31aea049a0248a281686
+# Source145-md5:       05492e447094c6fa6be5a2a8d790d398
 Source146:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ia.xpi
-# Source146-md5:       eb9b2f9fc29b2fbaca8ea84409ad4314
+# Source146-md5:       fab55ebb585d2e47e15a4793a01aebd3
 Source147:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/id.xpi
-# Source147-md5:       ad3c85186981ae62368ac7058955c086
+# Source147-md5:       4e9d6a1011fd527b76afceecd53587fb
 Source148:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/is.xpi
-# Source148-md5:       c7dc4eaedba6cd977cacf7fb258fff8a
+# Source148-md5:       46f603fb407e602d7145e077810e3c3a
 Source149:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/it.xpi
-# Source149-md5:       51fa31470c81cd7f702c99509a7fa4bc
+# Source149-md5:       e2a141f367b6d485573e8bb8d3b4ccac
 Source150:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ja.xpi
-# Source150-md5:       24702148fc4722c17aef502d0ebec933
+# Source150-md5:       d37922b206ea33fd93af031ead884d05
 Source151:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ka.xpi
-# Source151-md5:       d6ff2d79545d308d89981da372dc4763
+# Source151-md5:       0abaea505f80fb5367be57eeb1fd4228
 Source152:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/kab.xpi
-# Source152-md5:       1960dc8de6f1555b5ae698d7ffb66df0
+# Source152-md5:       0b5af9bbe18f86cd879ed45e7924632f
 Source153:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/kk.xpi
-# Source153-md5:       394e4f3b69496bfd991ea8cac1057ae0
+# Source153-md5:       3649ad93f64eb028f254eb67a511f0ae
 Source154:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/km.xpi
-# Source154-md5:       96da1964c1c36c59e827bde4611fa832
+# Source154-md5:       6325a3d8dd21fe499cae732b480928ab
 Source155:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/kn.xpi
-# Source155-md5:       fd81c472a16d9aef60d0bd36785a0560
+# Source155-md5:       0d27ed2d12c9eecc5e71630733bca3a5
 Source156:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ko.xpi
-# Source156-md5:       c30910468bdd70630bbe38b57ff93b26
+# Source156-md5:       f8e38eef7a4ec2b7c3ee555c06eb6796
 Source157:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/lij.xpi
-# Source157-md5:       207fdf517e09639f2d3424204a26e0d9
+# Source157-md5:       68e8783b0235b1b9f116a8de0f5cf413
 Source158:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/lt.xpi
-# Source158-md5:       2137128729c5f8e54d073b54328b90cc
+# Source158-md5:       3f5393d4ac407772a457170cbd54d85f
 Source159:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/lv.xpi
-# Source159-md5:       72c019c277bbbf8057b16aefc4f6945c
+# Source159-md5:       3339df8b9d95436c4a2fd39a14fd7c41
 Source160:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/mk.xpi
-# Source160-md5:       85b2c92dffecdc7cfef78bdfdb5767d4
+# Source160-md5:       f2e9afb42ebff42cdf2ca24657b576b6
 Source161:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/mr.xpi
-# Source161-md5:       ed937a99f50dbfe35ceee7123c03a195
+# Source161-md5:       179583da518153341feb1746ad6e7f1b
 Source162:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ms.xpi
-# Source162-md5:       d3692abcb51dac5f2d6b86616206313c
+# Source162-md5:       18adc97dacc92bacb12506a754d52bd6
 Source163:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/my.xpi
-# Source163-md5:       9cae19ebb06c14a675a7af14b6fe3a79
+# Source163-md5:       13076aebf58ba7bd08afa2b6e869b579
 Source164:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/nb-NO.xpi
-# Source164-md5:       0995dbd860895d859e64be80da739c35
+# Source164-md5:       4da88b403e80705970e9c5038171812b
 Source165:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ne-NP.xpi
-# Source165-md5:       a9f1194cacb6362ba61758a54356fe87
+# Source165-md5:       8357966b118d146eef0a7015e17e0264
 Source166:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/nl.xpi
-# Source166-md5:       30f135fab3c91fd9b103d81cca2a5076
+# Source166-md5:       f72872f93b726256ba5290c9b0e6b5b3
 Source167:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/nn-NO.xpi
-# Source167-md5:       932eff4734bd0e0a39deedd1e370a758
+# Source167-md5:       0946d6e2b1fcd49616fb3c4ef153b450
 Source168:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/oc.xpi
-# Source168-md5:       adb3793c23e1e2c7a5308dd63bb2cf3b
+# Source168-md5:       0db030bcf3bfaf150b523f9bfec9d59a
 Source169:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/pa-IN.xpi
-# Source169-md5:       450e31e14487d149a987a0a9d440cf78
+# Source169-md5:       10b0c74ae913e4d14ff0b8adcc5e0fe4
 Source170:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/pl.xpi
-# Source170-md5:       32e539ecc6167a5dc9963e6255a45dd6
+# Source170-md5:       f392f7fbc3b033362e0bb19868f79cad
 Source171:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/pt-BR.xpi
-# Source171-md5:       729b705b41534cc1eb5c27c9b9f77795
+# Source171-md5:       b92b0625c11ad7fc9f20c68dee699693
 Source172:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/pt-PT.xpi
-# Source172-md5:       fec742e1d1025e95e163f14d3aa8c425
+# Source172-md5:       c103cb31d4dd4871f199129391a316f4
 Source173:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/rm.xpi
-# Source173-md5:       6ecec58827deccab7e66f090a7d5cd88
+# Source173-md5:       0a8386120f9b7966195db26b798cc55a
 Source174:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ro.xpi
-# Source174-md5:       a4cc76d74c45380e11f60ac5265964b5
+# Source174-md5:       b3becd2c793d94ad8933f47cb0a3598c
 Source175:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ru.xpi
-# Source175-md5:       91de7fb9dcad4ecf67eca5e908d9d847
+# Source175-md5:       369af2925fb41125664560a784e60a9b
 Source176:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/sco.xpi
-# Source176-md5:       f154e3eaf90b7b8fa745fff9fc0c184d
+# Source176-md5:       854eab70ec39ea126102929eb259093b
 Source177:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/si.xpi
-# Source177-md5:       cc7d42995cd03aaa22fe62ce82feabc4
+# Source177-md5:       4ceb9d19f849a8311d4140ce161dcbe2
 Source178:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/sk.xpi
-# Source178-md5:       5a2d3cf0b2b1f504bc55c1658ca6952b
+# Source178-md5:       52331932e3960afd5e02a0894930835c
 Source179:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/sl.xpi
-# Source179-md5:       956b2123f77ca6c68eb1128511a30758
+# Source179-md5:       471012e70789f21e198af057ba44fde1
 Source180:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/son.xpi
-# Source180-md5:       4e4390de5a898b21d90aab5842723369
+# Source180-md5:       79421feeda53bd61a1c68295b5e46bcd
 Source181:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/sq.xpi
-# Source181-md5:       0150cb13cdf265d487343a1c2ccd8779
+# Source181-md5:       ec04127c13555a907b4ef34d11ed6a5b
 Source182:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/sr.xpi
-# Source182-md5:       f5d8145f50c1cedaf8b297915f4f8527
+# Source182-md5:       0d011755f21e5a2014534fc487c6975f
 Source183:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/sv-SE.xpi
-# Source183-md5:       7a2a607bc28e536bdbe4f34df54655a4
+# Source183-md5:       76a851263333ee00ff2d9d6f6380c2ab
 Source184:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/szl.xpi
-# Source184-md5:       b7d1b3024c648101ff3fa1366faac6dc
+# Source184-md5:       e2d240345f5f54d1c88a5378bf48c4a7
 Source185:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ta.xpi
-# Source185-md5:       f794cc0d802cd4c6f44dfe98fd8b5c07
+# Source185-md5:       d3e272d2936bdde72013c9700c434be3
 Source186:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/te.xpi
-# Source186-md5:       742e84e24834e8c782569fcc8d3be582
+# Source186-md5:       404a6c6bcac9ea91b1f6b15a582fba98
 Source187:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/th.xpi
-# Source187-md5:       7ded58c813a729803c63f6d906ea26af
+# Source187-md5:       ab4949afe6118482de1327720fffaefa
 Source188:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/tl.xpi
-# Source188-md5:       bad9b4ed7c951dbc67e73636ff8103ac
+# Source188-md5:       d65466b2a03bcb3a786838c737a26f27
 Source189:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/tr.xpi
-# Source189-md5:       d621ddd301128a70ebd0be55e9b83da9
+# Source189-md5:       5cf381263bee5568d6d6b62dc0e22654
 Source190:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/trs.xpi
-# Source190-md5:       ae5b83350e9e1eb0f85da58d7d1f6d11
+# Source190-md5:       2938985fe8c4e2d13a4e69a18bfd0026
 Source191:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/uk.xpi
-# Source191-md5:       7a2b97a22ec27fc20fc535e58ed8ca2c
+# Source191-md5:       5a3aa490634556ebcad2d02ec85d80cf
 Source192:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/ur.xpi
-# Source192-md5:       bde3b14f0d0b3e7578e72cb83c5a497a
+# Source192-md5:       e7beccc0e0bb2adff7a4348e914cfbde
 Source193:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/uz.xpi
-# Source193-md5:       0e0c950ee7c00366c68c9194c6fa6fd5
+# Source193-md5:       2712c078505d7a4db3849d9e53569573
 Source194:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/vi.xpi
-# Source194-md5:       1d3f9ec4f5ba141921ede4edd303a287
+# Source194-md5:       37ee7e7bdbf91cf5dddc8b4db22ebd9c
 Source195:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/xh.xpi
-# Source195-md5:       f10d7e4d24b43c71306a7a7fd32d48f3
+# Source195-md5:       6eec637759d9849085e200f68f366ba1
 Source196:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/zh-CN.xpi
-# Source196-md5:       47710327552a624a9f23177b7ef70b64
+# Source196-md5:       7bbc162baf78eb53864380683d293c2a
 Source197:     https://releases.mozilla.org/pub/firefox/releases/%{version}/linux-i686/xpi/zh-TW.xpi
-# Source197-md5:       08ea52145fb9fb1527dee0703adcfd65
-Patch0:                xsimd.patch
+# Source197-md5:       090eb48f7a6045f8f6e6cc800cc7982f
 Patch4:                %{name}-prefs.patch
 Patch5:                %{name}-pld-bookmarks.patch
 Patch6:                %{name}-no-subshell.patch
@@ -2119,7 +2118,6 @@ unpack() {
 %define __unzip unpack
 %setup -q %(seq -f '-a %g' 100 197 | xargs)
 
-%patch0 -p1
 %patch4 -p1
 %patch5 -p1
 %patch6 -p2
diff --git a/xsimd.patch b/xsimd.patch
deleted file mode 100644 (file)
index 0141b89..0000000
+++ /dev/null
@@ -1,758 +0,0 @@
-diff --git a/dom/media/webaudio/AudioNodeEngineGeneric.h b/dom/media/webaudio/AudioNodeEngineGeneric.h
---- a/dom/media/webaudio/AudioNodeEngineGeneric.h
-+++ b/dom/media/webaudio/AudioNodeEngineGeneric.h
-@@ -203,14 +203,14 @@
-     MOZ_ASSERT((aSize % xsimd::batch<float, Arch>::size == 0),
-                "requires tail processing");
-     MOZ_UNROLL(2)
-     for (unsigned i = 0; i < aSize * 2;
--         i += 2 * xsimd::batch<std::complex<float>>::size) {
--      auto in1 = xsimd::batch<std::complex<float>>::load_aligned(
-+         i += 2 * xsimd::batch<std::complex<float>, Arch>::size) {
-+      auto in1 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-           reinterpret_cast<const std::complex<float>*>(&aInput[i]));
--      auto in2 = xsimd::batch<std::complex<float>>::load_aligned(
-+      auto in2 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-           reinterpret_cast<const std::complex<float>*>(&aScale[i]));
-       auto out = in1 * in2;
-       out.store_aligned(reinterpret_cast<std::complex<float>*>(&aOutput[i]));
-     }
-   };
-
-diff --git a/dom/media/webaudio/AudioNodeEngineGeneric.h b/dom/media/webaudio/AudioNodeEngineGeneric.h
---- a/dom/media/webaudio/AudioNodeEngineGeneric.h
-+++ b/dom/media/webaudio/AudioNodeEngineGeneric.h
-@@ -5,331 +5,54 @@
- #ifndef MOZILLA_AUDIONODEENGINEGENERIC_H_
- #define MOZILLA_AUDIONODEENGINEGENERIC_H_
- #include "AudioNodeEngine.h"
--#include "AlignmentUtils.h"
- #include "xsimd/xsimd.hpp"
--#if defined(__GNUC__) && __GNUC__ > 7
--#  define MOZ_PRAGMA(tokens) _Pragma(#tokens)
--#  define MOZ_UNROLL(factor) MOZ_PRAGMA(GCC unroll factor)
--#elif defined(__INTEL_COMPILER) || (defined(__clang__) && __clang_major__ > 3)
--#  define MOZ_PRAGMA(tokens) _Pragma(#tokens)
--#  define MOZ_UNROLL(factor) MOZ_PRAGMA(unroll factor)
--#else
--#  define MOZ_UNROLL(_)
--#endif
--
- namespace mozilla {
- template <class Arch>
--static bool is_aligned(const void* ptr) {
--  return (reinterpret_cast<uintptr_t>(ptr) &
--          ~(static_cast<uintptr_t>(Arch::alignment()) - 1)) ==
--         reinterpret_cast<uintptr_t>(ptr);
--};
--
--template <class Arch>
- struct Engine {
-   static void AudioBufferAddWithScale(const float* aInput, float aScale,
--                                      float* aOutput, uint32_t aSize) {
--    if constexpr (Arch::requires_alignment()) {
--      if (aScale == 1.0f) {
--        while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
--          if (!aSize) return;
--          *aOutput += *aInput;
--          ++aOutput;
--          ++aInput;
--          --aSize;
--        }
--      } else {
--        while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
--          if (!aSize) return;
--          *aOutput += *aInput * aScale;
--          ++aOutput;
--          ++aInput;
--          --aSize;
--        }
--      }
--    }
--    MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
--
--    xsimd::batch<float, Arch> vgain(aScale);
--
--    uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
--    MOZ_UNROLL(4)
--    for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
--      auto vin1 = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
--      auto vin2 = xsimd::batch<float, Arch>::load_aligned(&aOutput[i]);
--      auto vout = xsimd::fma(vin1, vgain, vin2);
--      vout.store_aligned(&aOutput[i]);
--    }
--
--    for (unsigned i = aVSize; i < aSize; ++i) {
--      aOutput[i] += aInput[i] * aScale;
--    }
--  };
-+                                      float* aOutput, uint32_t aSize);
-   static void AudioBlockCopyChannelWithScale(const float* aInput, float aScale,
--                                             float* aOutput) {
--    MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
--
--    MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
--               "requires tail processing");
--
--    xsimd::batch<float, Arch> vgain = (aScale);
--
--    MOZ_UNROLL(4)
--    for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
--         i += xsimd::batch<float, Arch>::size) {
--      auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
--      auto vout = vin * vgain;
--      vout.store_aligned(&aOutput[i]);
--    }
--  };
-+                                             float* aOutput);
-   static void AudioBlockCopyChannelWithScale(
-       const float aInput[WEBAUDIO_BLOCK_SIZE],
-       const float aScale[WEBAUDIO_BLOCK_SIZE],
--      float aOutput[WEBAUDIO_BLOCK_SIZE]) {
--    MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
--
--    MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
--               "requires tail processing");
--
--    MOZ_UNROLL(4)
--    for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
--         i += xsimd::batch<float, Arch>::size) {
--      auto vscaled = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
--      auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
--      auto vout = vin * vscaled;
--      vout.store_aligned(&aOutput[i]);
--    }
--  };
-+      float aOutput[WEBAUDIO_BLOCK_SIZE]);
-   static void AudioBufferInPlaceScale(float* aBlock, float aScale,
--                                      uint32_t aSize) {
--    MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
--
--    xsimd::batch<float, Arch> vgain(aScale);
--
--    uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
--    MOZ_UNROLL(4)
--    for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
--      auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
--      auto vout = vin * vgain;
--      vout.store_aligned(&aBlock[i]);
--    }
--    for (unsigned i = aVSize; i < aSize; ++i) aBlock[i] *= aScale;
--  };
-+                                      uint32_t aSize);
-   static void AudioBufferInPlaceScale(float* aBlock, float* aScale,
--                                      uint32_t aSize) {
--    MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
--
--    uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
--    MOZ_UNROLL(4)
--    for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
--      auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
--      auto vgain = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
--      auto vout = vin * vgain;
--      vout.store_aligned(&aBlock[i]);
--    }
--    for (uint32_t i = aVSize; i < aSize; ++i) {
--      *aBlock++ *= *aScale++;
--    }
--  };
-+                                      uint32_t aSize);
-   static void AudioBlockPanStereoToStereo(
-       const float aInputL[WEBAUDIO_BLOCK_SIZE],
-       const float aInputR[WEBAUDIO_BLOCK_SIZE], float aGainL, float aGainR,
-       bool aIsOnTheLeft, float aOutputL[WEBAUDIO_BLOCK_SIZE],
--      float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
--    MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
--
--    MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
--               "requires tail processing");
--
--    xsimd::batch<float, Arch> vgainl(aGainL);
--    xsimd::batch<float, Arch> vgainr(aGainR);
--
--    if (aIsOnTheLeft) {
--      MOZ_UNROLL(2)
--      for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
--           i += xsimd::batch<float, Arch>::size) {
--        auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
--        auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
--
--        /* left channel : aOutputL  = aInputL + aInputR * gainL */
--        auto vout = xsimd::fma(vinr, vgainl, vinl);
--        vout.store_aligned(&aOutputL[i]);
--
--        /* right channel : aOutputR = aInputR * gainR */
--        auto vscaled = vinr * vgainr;
--        vscaled.store_aligned(&aOutputR[i]);
--      }
--    } else {
--      MOZ_UNROLL(2)
--      for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
--           i += xsimd::batch<float, Arch>::size) {
--        auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
--        auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
--
--        /* left channel : aInputL * gainL */
--        auto vscaled = vinl * vgainl;
--        vscaled.store_aligned(&aOutputL[i]);
--
--        /* right channel: aOutputR = aInputR + aInputL * gainR */
--        auto vout = xsimd::fma(vinl, vgainr, vinr);
--        vout.store_aligned(&aOutputR[i]);
--      }
--    }
--  };
-+      float aOutputR[WEBAUDIO_BLOCK_SIZE]);
-   static void BufferComplexMultiply(const float* aInput, const float* aScale,
--                                    float* aOutput, uint32_t aSize) {
--    MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
--    MOZ_ASSERT((aSize % xsimd::batch<float, Arch>::size == 0),
--               "requires tail processing");
--
--    MOZ_UNROLL(2)
--    for (unsigned i = 0; i < aSize * 2;
--         i += 2 * xsimd::batch<std::complex<float>, Arch>::size) {
--      auto in1 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
--          reinterpret_cast<const std::complex<float>*>(&aInput[i]));
--      auto in2 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
--          reinterpret_cast<const std::complex<float>*>(&aScale[i]));
--      auto out = in1 * in2;
--      out.store_aligned(reinterpret_cast<std::complex<float>*>(&aOutput[i]));
--    }
--  };
--
--  static float AudioBufferSumOfSquares(const float* aInput, uint32_t aLength) {
--    float sum = 0.f;
--
--    if constexpr (Arch::requires_alignment()) {
--      while (!is_aligned<Arch>(aInput)) {
--        if (!aLength) {
--          return sum;
--        }
--        sum += *aInput * *aInput;
--        ++aInput;
--        --aLength;
--      }
--    }
--
--    MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
--
--    constexpr uint32_t unroll_factor = 4;
--    xsimd::batch<float, Arch> accs[unroll_factor] = {0.f, 0.f, 0.f, 0.f};
--
--    uint32_t vLength =
--        aLength & ~(unroll_factor * xsimd::batch<float, Arch>::size - 1);
-+                                    float* aOutput, uint32_t aSize);
--    for (uint32_t i = 0; i < vLength;
--         i += unroll_factor * xsimd::batch<float, Arch>::size) {
--      MOZ_UNROLL(4)
--      for (uint32_t j = 0; j < unroll_factor; ++j) {
--        auto in = xsimd::batch<float, Arch>::load_aligned(
--            &aInput[i + xsimd::batch<float, Arch>::size * j]);
--        accs[j] = xsimd::fma(in, in, accs[j]);
--      }
--    }
--
--    sum += reduce_add((accs[0] + accs[1]) + (accs[2] + accs[3]));
--    for (uint32_t i = vLength; i < aLength; ++i) sum += aInput[i] * aInput[i];
--    return sum;
--  };
-+  static float AudioBufferSumOfSquares(const float* aInput, uint32_t aLength);
--  static void NaNToZeroInPlace(float* aSamples, size_t aCount) {
--    if constexpr (Arch::requires_alignment()) {
--      while (!is_aligned<Arch>(aSamples)) {
--        if (!aCount) {
--          return;
--        }
--        if (*aSamples != *aSamples) {
--          *aSamples = 0.0;
--        }
--        ++aSamples;
--        --aCount;
--      }
--    }
--
--    MOZ_ASSERT(is_aligned<Arch>(aSamples), "aSamples is aligned");
--
--    uint32_t vCount = aCount & ~(xsimd::batch<float, Arch>::size - 1);
--
--    MOZ_UNROLL(4)
--    for (uint32_t i = 0; i < vCount; i += xsimd::batch<float, Arch>::size) {
--      auto vin = xsimd::batch<float, Arch>::load_aligned(&aSamples[i]);
--      auto vout =
--          xsimd::select(xsimd::isnan(vin), xsimd::batch<float, Arch>(0.f), vin);
--      vout.store_aligned(&aSamples[i]);
--    }
--
--    for (uint32_t i = vCount; i < aCount; i++) {
--      if (aSamples[i] != aSamples[i]) {
--        aSamples[i] = 0.0;
--      }
--    }
--  };
-+  static void NaNToZeroInPlace(float* aSamples, size_t aCount);
-   static void AudioBlockPanStereoToStereo(
-       const float aInputL[WEBAUDIO_BLOCK_SIZE],
-       const float aInputR[WEBAUDIO_BLOCK_SIZE],
-       const float aGainL[WEBAUDIO_BLOCK_SIZE],
-       const float aGainR[WEBAUDIO_BLOCK_SIZE],
-       const bool aIsOnTheLeft[WEBAUDIO_BLOCK_SIZE],
--      float aOutputL[WEBAUDIO_BLOCK_SIZE],
--      float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
--    MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aGainL), "aGainL is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aGainR), "aGainR is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aIsOnTheLeft), "aIsOnTheLeft is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
--    MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
--
--    MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
--               "requires tail processing");
--
--    MOZ_UNROLL(2)
--    for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE;
--         i += xsimd::batch<float, Arch>::size) {
--      auto mask =
--          xsimd::batch_bool<float, Arch>::load_aligned(&aIsOnTheLeft[i]);
--
--      auto inputL = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
--      auto inputR = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
--      auto gainL = xsimd::batch<float, Arch>::load_aligned(&aGainL[i]);
--      auto gainR = xsimd::batch<float, Arch>::load_aligned(&aGainR[i]);
--
--      auto outL_true = xsimd::fma(inputR, gainL, inputL);
--      auto outR_true = inputR * gainR;
--
--      auto outL_false = inputL * gainL;
--      auto outR_false = xsimd::fma(inputL, gainR, inputR);
--
--      auto outL = xsimd::select(mask, outL_true, outL_false);
--      auto outR = xsimd::select(mask, outR_true, outR_false);
--
--      outL.store_aligned(&aOutputL[i]);
--      outR.store_aligned(&aOutputR[i]);
--    }
--  }
-+      float aOutputL[WEBAUDIO_BLOCK_SIZE], float aOutputR[WEBAUDIO_BLOCK_SIZE]);
- };
- }  // namespace mozilla
- #endif
-diff --git a/dom/media/webaudio/AudioNodeEngineGenericImpl.h b/dom/media/webaudio/AudioNodeEngineGenericImpl.h
-new file mode 100644
---- /dev/null
-+++ b/dom/media/webaudio/AudioNodeEngineGenericImpl.h
-@@ -0,0 +1,341 @@
-+/* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-+/* this source code form is subject to the terms of the mozilla public
-+ * license, v. 2.0. if a copy of the mpl was not distributed with this file,
-+ * You can obtain one at http://mozilla.org/MPL/2.0/. */
-+
-+#ifndef MOZILLA_AUDIONODEENGINEGENERICIMPL_H_
-+#define MOZILLA_AUDIONODEENGINEGENERICIMPL_H_
-+
-+#include "AudioNodeEngineGeneric.h"
-+#include "AlignmentUtils.h"
-+
-+#if defined(__GNUC__) && __GNUC__ > 7
-+#  define MOZ_PRAGMA(tokens) _Pragma(#tokens)
-+#  define MOZ_UNROLL(factor) MOZ_PRAGMA(GCC unroll factor)
-+#elif defined(__INTEL_COMPILER) || (defined(__clang__) && __clang_major__ > 3)
-+#  define MOZ_PRAGMA(tokens) _Pragma(#tokens)
-+#  define MOZ_UNROLL(factor) MOZ_PRAGMA(unroll factor)
-+#else
-+#  define MOZ_UNROLL(_)
-+#endif
-+
-+namespace mozilla {
-+
-+template <class Arch>
-+static bool is_aligned(const void* ptr) {
-+  return (reinterpret_cast<uintptr_t>(ptr) &
-+          ~(static_cast<uintptr_t>(Arch::alignment()) - 1)) ==
-+         reinterpret_cast<uintptr_t>(ptr);
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBufferAddWithScale(const float* aInput, float aScale,
-+                                           float* aOutput, uint32_t aSize) {
-+  if constexpr (Arch::requires_alignment()) {
-+    if (aScale == 1.0f) {
-+      while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
-+        if (!aSize) return;
-+        *aOutput += *aInput;
-+        ++aOutput;
-+        ++aInput;
-+        --aSize;
-+      }
-+    } else {
-+      while (!is_aligned<Arch>(aInput) || !is_aligned<Arch>(aOutput)) {
-+        if (!aSize) return;
-+        *aOutput += *aInput * aScale;
-+        ++aOutput;
-+        ++aInput;
-+        --aSize;
-+      }
-+    }
-+  }
-+  MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+
-+  xsimd::batch<float, Arch> vgain(aScale);
-+
-+  uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-+  MOZ_UNROLL(4)
-+  for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-+    auto vin1 = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-+    auto vin2 = xsimd::batch<float, Arch>::load_aligned(&aOutput[i]);
-+    auto vout = xsimd::fma(vin1, vgain, vin2);
-+    vout.store_aligned(&aOutput[i]);
-+  }
-+
-+  for (unsigned i = aVSize; i < aSize; ++i) {
-+    aOutput[i] += aInput[i] * aScale;
-+  }
-+}
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockCopyChannelWithScale(const float* aInput,
-+                                                  float aScale,
-+                                                  float* aOutput) {
-+  MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+
-+  MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+             "requires tail processing");
-+
-+  xsimd::batch<float, Arch> vgain = (aScale);
-+
-+  MOZ_UNROLL(4)
-+  for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+       i += xsimd::batch<float, Arch>::size) {
-+    auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-+    auto vout = vin * vgain;
-+    vout.store_aligned(&aOutput[i]);
-+  }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockCopyChannelWithScale(
-+    const float aInput[WEBAUDIO_BLOCK_SIZE],
-+    const float aScale[WEBAUDIO_BLOCK_SIZE],
-+    float aOutput[WEBAUDIO_BLOCK_SIZE]) {
-+  MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-+
-+  MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+             "requires tail processing");
-+
-+  MOZ_UNROLL(4)
-+  for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+       i += xsimd::batch<float, Arch>::size) {
-+    auto vscaled = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
-+    auto vin = xsimd::batch<float, Arch>::load_aligned(&aInput[i]);
-+    auto vout = vin * vscaled;
-+    vout.store_aligned(&aOutput[i]);
-+  }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBufferInPlaceScale(float* aBlock, float aScale,
-+                                           uint32_t aSize) {
-+  MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
-+
-+  xsimd::batch<float, Arch> vgain(aScale);
-+
-+  uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-+  MOZ_UNROLL(4)
-+  for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-+    auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
-+    auto vout = vin * vgain;
-+    vout.store_aligned(&aBlock[i]);
-+  }
-+  for (unsigned i = aVSize; i < aSize; ++i) aBlock[i] *= aScale;
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBufferInPlaceScale(float* aBlock, float* aScale,
-+                                           uint32_t aSize) {
-+  MOZ_ASSERT(is_aligned<Arch>(aBlock), "aBlock is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-+
-+  uint32_t aVSize = aSize & ~(xsimd::batch<float, Arch>::size - 1);
-+  MOZ_UNROLL(4)
-+  for (unsigned i = 0; i < aVSize; i += xsimd::batch<float, Arch>::size) {
-+    auto vin = xsimd::batch<float, Arch>::load_aligned(&aBlock[i]);
-+    auto vgain = xsimd::batch<float, Arch>::load_aligned(&aScale[i]);
-+    auto vout = vin * vgain;
-+    vout.store_aligned(&aBlock[i]);
-+  }
-+  for (uint32_t i = aVSize; i < aSize; ++i) {
-+    *aBlock++ *= *aScale++;
-+  }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockPanStereoToStereo(
-+    const float aInputL[WEBAUDIO_BLOCK_SIZE],
-+    const float aInputR[WEBAUDIO_BLOCK_SIZE], float aGainL, float aGainR,
-+    bool aIsOnTheLeft, float aOutputL[WEBAUDIO_BLOCK_SIZE],
-+    float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
-+  MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
-+
-+  MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+             "requires tail processing");
-+
-+  xsimd::batch<float, Arch> vgainl(aGainL);
-+  xsimd::batch<float, Arch> vgainr(aGainR);
-+
-+  if (aIsOnTheLeft) {
-+    MOZ_UNROLL(2)
-+    for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+         i += xsimd::batch<float, Arch>::size) {
-+      auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-+      auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-+
-+      /* left channel : aOutputL  = aInputL + aInputR * gainL */
-+      auto vout = xsimd::fma(vinr, vgainl, vinl);
-+      vout.store_aligned(&aOutputL[i]);
-+
-+      /* right channel : aOutputR = aInputR * gainR */
-+      auto vscaled = vinr * vgainr;
-+      vscaled.store_aligned(&aOutputR[i]);
-+    }
-+  } else {
-+    MOZ_UNROLL(2)
-+    for (unsigned i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+         i += xsimd::batch<float, Arch>::size) {
-+      auto vinl = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-+      auto vinr = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-+
-+      /* left channel : aInputL * gainL */
-+      auto vscaled = vinl * vgainl;
-+      vscaled.store_aligned(&aOutputL[i]);
-+
-+      /* right channel: aOutputR = aInputR + aInputL * gainR */
-+      auto vout = xsimd::fma(vinl, vgainr, vinr);
-+      vout.store_aligned(&aOutputR[i]);
-+    }
-+  }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::BufferComplexMultiply(const float* aInput,
-+                                         const float* aScale, float* aOutput,
-+                                         uint32_t aSize) {
-+  MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutput), "aOutput is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aScale), "aScale is aligned");
-+  MOZ_ASSERT((aSize % xsimd::batch<float, Arch>::size == 0),
-+             "requires tail processing");
-+
-+  MOZ_UNROLL(2)
-+  for (unsigned i = 0; i < aSize * 2;
-+       i += 2 * xsimd::batch<std::complex<float>, Arch>::size) {
-+    auto in1 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-+        reinterpret_cast<const std::complex<float>*>(&aInput[i]));
-+    auto in2 = xsimd::batch<std::complex<float>, Arch>::load_aligned(
-+        reinterpret_cast<const std::complex<float>*>(&aScale[i]));
-+    auto out = in1 * in2;
-+    out.store_aligned(reinterpret_cast<std::complex<float>*>(&aOutput[i]));
-+  }
-+};
-+
-+template <class Arch>
-+float Engine<Arch>::AudioBufferSumOfSquares(const float* aInput,
-+                                            uint32_t aLength) {
-+  float sum = 0.f;
-+
-+  if constexpr (Arch::requires_alignment()) {
-+    while (!is_aligned<Arch>(aInput)) {
-+      if (!aLength) {
-+        return sum;
-+      }
-+      sum += *aInput * *aInput;
-+      ++aInput;
-+      --aLength;
-+    }
-+  }
-+
-+  MOZ_ASSERT(is_aligned<Arch>(aInput), "aInput is aligned");
-+
-+  constexpr uint32_t unroll_factor = 4;
-+  xsimd::batch<float, Arch> accs[unroll_factor] = {0.f, 0.f, 0.f, 0.f};
-+
-+  uint32_t vLength =
-+      aLength & ~(unroll_factor * xsimd::batch<float, Arch>::size - 1);
-+
-+  for (uint32_t i = 0; i < vLength;
-+       i += unroll_factor * xsimd::batch<float, Arch>::size) {
-+    MOZ_UNROLL(4)
-+    for (uint32_t j = 0; j < unroll_factor; ++j) {
-+      auto in = xsimd::batch<float, Arch>::load_aligned(
-+          &aInput[i + xsimd::batch<float, Arch>::size * j]);
-+      accs[j] = xsimd::fma(in, in, accs[j]);
-+    }
-+  }
-+
-+  sum += reduce_add((accs[0] + accs[1]) + (accs[2] + accs[3]));
-+  for (uint32_t i = vLength; i < aLength; ++i) sum += aInput[i] * aInput[i];
-+  return sum;
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::NaNToZeroInPlace(float* aSamples, size_t aCount) {
-+  if constexpr (Arch::requires_alignment()) {
-+    while (!is_aligned<Arch>(aSamples)) {
-+      if (!aCount) {
-+        return;
-+      }
-+      if (*aSamples != *aSamples) {
-+        *aSamples = 0.0;
-+      }
-+      ++aSamples;
-+      --aCount;
-+    }
-+  }
-+
-+  MOZ_ASSERT(is_aligned<Arch>(aSamples), "aSamples is aligned");
-+
-+  uint32_t vCount = aCount & ~(xsimd::batch<float, Arch>::size - 1);
-+
-+  MOZ_UNROLL(4)
-+  for (uint32_t i = 0; i < vCount; i += xsimd::batch<float, Arch>::size) {
-+    auto vin = xsimd::batch<float, Arch>::load_aligned(&aSamples[i]);
-+    auto vout =
-+        xsimd::select(xsimd::isnan(vin), xsimd::batch<float, Arch>(0.f), vin);
-+    vout.store_aligned(&aSamples[i]);
-+  }
-+
-+  for (uint32_t i = vCount; i < aCount; i++) {
-+    if (aSamples[i] != aSamples[i]) {
-+      aSamples[i] = 0.0;
-+    }
-+  }
-+};
-+
-+template <class Arch>
-+void Engine<Arch>::AudioBlockPanStereoToStereo(
-+    const float aInputL[WEBAUDIO_BLOCK_SIZE],
-+    const float aInputR[WEBAUDIO_BLOCK_SIZE],
-+    const float aGainL[WEBAUDIO_BLOCK_SIZE],
-+    const float aGainR[WEBAUDIO_BLOCK_SIZE],
-+    const bool aIsOnTheLeft[WEBAUDIO_BLOCK_SIZE],
-+    float aOutputL[WEBAUDIO_BLOCK_SIZE], float aOutputR[WEBAUDIO_BLOCK_SIZE]) {
-+  MOZ_ASSERT(is_aligned<Arch>(aInputL), "aInputL is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aInputR), "aInputR is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aGainL), "aGainL is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aGainR), "aGainR is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aIsOnTheLeft), "aIsOnTheLeft is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutputL), "aOutputL is aligned");
-+  MOZ_ASSERT(is_aligned<Arch>(aOutputR), "aOutputR is aligned");
-+
-+  MOZ_ASSERT((WEBAUDIO_BLOCK_SIZE % xsimd::batch<float, Arch>::size == 0),
-+             "requires tail processing");
-+
-+  MOZ_UNROLL(2)
-+  for (uint32_t i = 0; i < WEBAUDIO_BLOCK_SIZE;
-+       i += xsimd::batch<float, Arch>::size) {
-+    auto mask = xsimd::batch_bool<float, Arch>::load_aligned(&aIsOnTheLeft[i]);
-+
-+    auto inputL = xsimd::batch<float, Arch>::load_aligned(&aInputL[i]);
-+    auto inputR = xsimd::batch<float, Arch>::load_aligned(&aInputR[i]);
-+    auto gainL = xsimd::batch<float, Arch>::load_aligned(&aGainL[i]);
-+    auto gainR = xsimd::batch<float, Arch>::load_aligned(&aGainR[i]);
-+
-+    auto outL_true = xsimd::fma(inputR, gainL, inputL);
-+    auto outR_true = inputR * gainR;
-+
-+    auto outL_false = inputL * gainL;
-+    auto outR_false = xsimd::fma(inputL, gainR, inputR);
-+
-+    auto outL = xsimd::select(mask, outL_true, outL_false);
-+    auto outR = xsimd::select(mask, outR_true, outR_false);
-+
-+    outL.store_aligned(&aOutputL[i]);
-+    outR.store_aligned(&aOutputR[i]);
-+  }
-+}
-+
-+}  // namespace mozilla
-+
-+#endif
-diff --git a/dom/media/webaudio/AudioNodeEngineNEON.cpp b/dom/media/webaudio/AudioNodeEngineNEON.cpp
---- a/dom/media/webaudio/AudioNodeEngineNEON.cpp
-+++ b/dom/media/webaudio/AudioNodeEngineNEON.cpp
-@@ -1,9 +1,9 @@
- /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* this source code form is subject to the terms of the mozilla public
-  * license, v. 2.0. if a copy of the mpl was not distributed with this file,
-  * You can obtain one at http://mozilla.org/MPL/2.0/. */
--#include "AudioNodeEngineGeneric.h"
-+#include "AudioNodeEngineGenericImpl.h"
- namespace mozilla {
- template struct Engine<xsimd::neon>;
- }  // namespace mozilla
-diff --git a/dom/media/webaudio/AudioNodeEngineSSE2.cpp b/dom/media/webaudio/AudioNodeEngineSSE2.cpp
---- a/dom/media/webaudio/AudioNodeEngineSSE2.cpp
-+++ b/dom/media/webaudio/AudioNodeEngineSSE2.cpp
-@@ -1,10 +1,10 @@
- /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* this source code form is subject to the terms of the mozilla public
-  * license, v. 2.0. if a copy of the mpl was not distributed with this file,
-  * You can obtain one at http://mozilla.org/MPL/2.0/. */
--#include "AudioNodeEngineGeneric.h"
-+#include "AudioNodeEngineGenericImpl.h"
- namespace mozilla {
- template struct Engine<xsimd::sse2>;
- }  // namespace mozilla
-diff --git a/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp b/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
---- a/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
-+++ b/dom/media/webaudio/AudioNodeEngineSSE4_2_FMA3.cpp
-@@ -1,10 +1,10 @@
- /* -*- mode: c++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* this source code form is subject to the terms of the mozilla public
-  * license, v. 2.0. if a copy of the mpl was not distributed with this file,
-  * You can obtain one at http://mozilla.org/MPL/2.0/. */
--#include "AudioNodeEngineGeneric.h"
-+#include "AudioNodeEngineGenericImpl.h"
- namespace mozilla {
- template struct Engine<xsimd::fma3<xsimd::sse4_2>>;
- }  // namespace mozilla
-
This page took 0.121894 seconds and 4 git commands to generate.