[tremor] [PATCH] support for non 64bit multiply capable CPUs/compilers

Nicolas Pitre nico at cam.org
Wed Oct 2 10:47:18 PDT 2002


The attached patch provides 32bit only multiply support to Tremor.  It 
should be applied to current CVS.  MULT30() was also removed since it's not 
used anymore.

This should be useful on architectures which can't perform 32x32=64bits 
multiplications or if their implementation is too slow.  Might be useful if 
the compiler doesn't suport them either, but in this case some inline 
assembly should be considered as well.

This produce faster code but with an accuracy cost.  The audio quality 
remains quite good nevertheless and some people might find it more than 
acceptable.

To enable this support you must define _NO_64BIT_MUL_.

If this patch is accepted I'll provide another one that will preshift values 
in the lookup tables when _NO_64BIT_MUL_ is defined to obtain yet more 
execution speed and further reduce text size.

Any comments?

<p>Nicolas

-------------- next part --------------
SW5kZXg6IG1pc2MuaA0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC91c3IvbG9jYWwvY3Zzcm9vdC9U
cmVtb3IvbWlzYy5oLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS4zDQpkaWZmIC11IC1yMS4zIG1p
c2MuaA0KLS0tIG1pc2MuaAkyMCBTZXAgMjAwMiAwMDoxMDozMSAtMDAwMAkxLjMNCisrKyBtaXNj
LmgJMiBPY3QgMjAwMiAxNjozMTo0MCAtMDAwMA0KQEAgLTMwLDYgKzMwLDkgQEANCiAjaWZuZGVm
IF9WX1dJREVfTUFUSA0KICNkZWZpbmUgX1ZfV0lERV9NQVRIDQogDQorI2lmbmRlZiBfTk9fNjRC
SVRfTVVMXw0KKy8qIDY0IGJpdCBtdWx0aXBseSAqLw0KKw0KICNpbmNsdWRlIDxlbmRpYW4uaD4N
CiANCiAjaWYgQllURV9PUkRFUj09TElUVExFX0VORElBTg0KQEAgLTYyLDE2ICs2NSwzNSBAQA0K
ICAgcmV0dXJuIE1VTFQzMih4LHkpPDwxOw0KIH0NCiANCi1zdGF0aWMgaW5saW5lIG9nZ19pbnQz
Ml90IE1VTFQzMChvZ2dfaW50MzJfdCB4LCBvZ2dfaW50MzJfdCB5KSB7DQotICByZXR1cm4gTVVM
VDMyKHgseSk8PDI7DQotfQ0KLQ0KIHN0YXRpYyBpbmxpbmUgb2dnX2ludDMyX3QgTVVMVDMxX1NI
SUZUMTUob2dnX2ludDMyX3QgeCwgb2dnX2ludDMyX3QgeSkgew0KICAgdW5pb24gbWFnaWMgbWFn
aWM7DQogICBtYWdpYy53aG9sZSAgPSAob2dnX2ludDY0X3QpeCAqIHk7DQogICByZXR1cm4gKChv
Z2dfdWludDMyX3QpKG1hZ2ljLmhhbHZlcy5sbyk+PjE1KSB8ICgobWFnaWMuaGFsdmVzLmhpKTw8
MTcpOw0KIH0NCiANCisjZWxzZQ0KKy8qIDMyIGJpdCBtdWx0aXBseSwgbW9yZSBwb3J0YWJsZSBi
dXQgbGVzcyBhY2N1cmF0ZSAqLw0KKw0KKy8qDQorICogTm90ZTogUHJlY2lzaW9uIGlzIGJpYXNl
ZCB0b3dhcmRzIHRoZSBmaXJzdCBhcmd1bWVudCB0aGVyZWZvcmUgb3JkZXJpbmcNCisgKiBpcyBp
bXBvcnRhbnQuICBTaGlmdCB2YWx1ZXMgd2VyZSBjaG9zZW4gZm9yIHRoZSBiZXN0IHNvdW5kIHF1
YWxpdHkgYWZ0ZXINCisgKiBtdWx0aXBsZSBsaXN0ZW5pbmcgdGVzdHMuDQorICovDQorDQorc3Rh
dGljIGlubGluZSBvZ2dfaW50MzJfdCBNVUxUMzIob2dnX2ludDMyX3QgeCwgb2dnX2ludDMyX3Qg
eSkgew0KKyAgcmV0dXJuICh4ID4+IDkpICogKHkgPj4gMjMpOw0KK30NCisNCitzdGF0aWMgaW5s
aW5lIG9nZ19pbnQzMl90IE1VTFQzMShvZ2dfaW50MzJfdCB4LCBvZ2dfaW50MzJfdCB5KSB7DQor
ICByZXR1cm4gKHggPj4gOCkgKiAoeSA+PiAyMyk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgb2dn
X2ludDMyX3QgTVVMVDMxX1NISUZUMTUob2dnX2ludDMyX3QgeCwgb2dnX2ludDMyX3QgeSkgew0K
KyAgcmV0dXJuICh4ID4+IDUpICogKHkgPj4gMTApOw0KK30NCisNCisjZW5kaWYNCisNCiBzdGF0
aWMgaW5saW5lIG9nZ19pbnQzMl90IENMSVBfVE9fMTUob2dnX2ludDMyX3QgeCkgew0KICAgaW50
IHJldD14Ow0KICAgcmV0LT0gKCh4PD0zMjc2NyktMSkmKHgtMzI3NjcpOw0KQEAgLTk4LDE1ICsx
MjAsMTUgQEANCiANCiAjaWZkZWYgX19pMzg2X18NCiANCi0jZGVmaW5lIFhQUk9EMzIoX2EsIF9i
LCBfdCwgX3YsIF94LCBfeSkJXA0KLSAgeyAqKF94KT0gTVVMVDMyKF9hLF90KStNVUxUMzIoX2Is
X3YpICAgIDsJXA0KLSAgICAqKF95KT0gTVVMVDMyKF9iLF90KS1NVUxUMzIoX2EsX3YpICAgIDsg
fQ0KLSNkZWZpbmUgWFBST0QzMShfYSwgX2IsIF90LCBfdiwgX3gsIF95KQlcDQotICB7ICooX3gp
PShNVUxUMzIoX2EsX3QpK01VTFQzMihfYixfdikpPDwxOwlcDQotICAgICooX3kpPShNVUxUMzIo
X2IsX3QpLU1VTFQzMihfYSxfdikpPDwxOyB9DQorI2RlZmluZSBYUFJPRDMyKF9hLCBfYiwgX3Qs
IF92LCBfeCwgX3kpCQlcDQorICB7ICooX3gpPU1VTFQzMihfYSxfdCkrTVVMVDMyKF9iLF92KTsJ
CVwNCisgICAgKihfeSk9TVVMVDMyKF9iLF90KS1NVUxUMzIoX2EsX3YpOyB9DQorI2RlZmluZSBY
UFJPRDMxKF9hLCBfYiwgX3QsIF92LCBfeCwgX3kpCQlcDQorICB7ICooX3gpPU1VTFQzMShfYSxf
dCkrTVVMVDMxKF9iLF92KTsJCVwNCisgICAgKihfeSk9TVVMVDMxKF9iLF90KS1NVUxUMzEoX2Es
X3YpOyB9DQogI2RlZmluZSBYTlBST0QzMShfYSwgX2IsIF90LCBfdiwgX3gsIF95KQlcDQotICB7
ICooX3gpPShNVUxUMzIoX2EsX3QpLU1VTFQzMihfYixfdikpPDwxOwlcDQotICAgICooX3kpPShN
VUxUMzIoX2IsX3QpK01VTFQzMihfYSxfdikpPDwxOyB9DQorICB7ICooX3gpPU1VTFQzMShfYSxf
dCktTVVMVDMxKF9iLF92KTsJCVwNCisgICAgKihfeSk9TVVMVDMxKF9iLF90KStNVUxUMzEoX2Es
X3YpOyB9DQogDQogI2Vsc2UNCiANCkBAIC0xMjIsMTYgKzE0NCwxNiBAQA0KIAkJCSAgIG9nZ19p
bnQzMl90ICB0LCBvZ2dfaW50MzJfdCAgdiwNCiAJCQkgICBvZ2dfaW50MzJfdCAqeCwgb2dnX2lu
dDMyX3QgKnkpDQogew0KLSAgKnggPSAoTVVMVDMyKGEsIHQpICsgTVVMVDMyKGIsIHYpKTw8MTsN
Ci0gICp5ID0gKE1VTFQzMihiLCB0KSAtIE1VTFQzMihhLCB2KSk8PDE7DQorICAqeCA9IE1VTFQz
MShhLCB0KSArIE1VTFQzMShiLCB2KTsNCisgICp5ID0gTVVMVDMxKGIsIHQpIC0gTVVMVDMxKGEs
IHYpOw0KIH0NCiANCiBzdGF0aWMgaW5saW5lIHZvaWQgWE5QUk9EMzEob2dnX2ludDMyX3QgIGEs
IG9nZ19pbnQzMl90ICBiLA0KIAkJCSAgICBvZ2dfaW50MzJfdCAgdCwgb2dnX2ludDMyX3QgIHYs
DQogCQkJICAgIG9nZ19pbnQzMl90ICp4LCBvZ2dfaW50MzJfdCAqeSkNCiB7DQotICAqeCA9IChN
VUxUMzIoYSwgdCkgLSBNVUxUMzIoYiwgdikpPDwxOw0KLSAgKnkgPSAoTVVMVDMyKGIsIHQpICsg
TVVMVDMyKGEsIHYpKTw8MTsNCisgICp4ID0gTVVMVDMxKGEsIHQpIC0gTVVMVDMxKGIsIHYpOw0K
KyAgKnkgPSBNVUxUMzEoYiwgdCkgKyBNVUxUMzEoYSwgdik7DQogfQ0KIA0KICNlbmRpZg0KSW5k
ZXg6IG1kY3QuYw0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQ0KUkNTIGZpbGU6IC91c3IvbG9jYWwvY3Zzcm9vdC9UcmVt
b3IvbWRjdC5jLHYNCnJldHJpZXZpbmcgcmV2aXNpb24gMS41DQpkaWZmIC11IC1yMS41IG1kY3Qu
Yw0KLS0tIG1kY3QuYwkyMCBTZXAgMjAwMiAwMDoxMDozMSAtMDAwMAkxLjUNCisrKyBtZGN0LmMJ
MiBPY3QgMjAwMiAxNjozMTo0MCAtMDAwMA0KQEAgLTI3MCwxMCArMjcwLDEwIEBADQogICAgIERB
VEFfVFlQRSAqeDAgICAgPSB4ICsgKChyMyBeIDB4ZmZmKT4+c2hpZnQpIC0xOw0KICAgICBEQVRB
X1RZUEUgKngxICAgID0geCArIChyMz4+c2hpZnQpOw0KIA0KLSAgICBSRUdfVFlQRSAgcjAgICAg
ID0geDFbMV0gIC0geDBbMV07DQotICAgIFJFR19UWVBFICByMSAgICAgPSB4MFswXSAgKyB4MVsw
XTsNCisgICAgUkVHX1RZUEUgIHIwICAgICA9IHgwWzBdICArIHgxWzBdOw0KKyAgICBSRUdfVFlQ
RSAgcjEgICAgID0geDFbMV0gIC0geDBbMV07DQogDQotCSAgICAgIFhQUk9EMzIoIFRbMF0sIFRb
MV0sIHIwLCByMSwgJnIyLCAmcjMgKTsgVCs9c3RlcDsNCisJICAgICAgWFBST0QzMiggcjAsIHIx
LCBUWzFdLCBUWzBdLCAmcjIsICZyMyApOyBUKz1zdGVwOw0KIA0KIAkgICAgICB3MSAgICAtPSA0
Ow0KIA0KQEAgLTI4OCwxMCArMjg4LDEwIEBADQogICAgICAgICAgICAgICB4MCAgICAgPSB4ICsg
KChyMyBeIDB4ZmZmKT4+c2hpZnQpIC0xOw0KICAgICAgICAgICAgICAgeDEgICAgID0geCArIChy
Mz4+c2hpZnQpOw0KIA0KLSAgICAgICAgICAgICAgcjAgICAgID0geDFbMV0gIC0geDBbMV07DQot
ICAgICAgICAgICAgICByMSAgICAgPSB4MFswXSAgKyB4MVswXTsNCisgICAgICAgICAgICAgIHIw
ICAgICA9IHgwWzBdICArIHgxWzBdOw0KKyAgICAgICAgICAgICAgcjEgICAgID0geDFbMV0gIC0g
eDBbMV07DQogDQotCSAgICAgIFhQUk9EMzIoIFRbMF0sIFRbMV0sIHIwLCByMSwgJnIyLCAmcjMg
KTsgVCs9c3RlcDsNCisJICAgICAgWFBST0QzMiggcjAsIHIxLCBUWzFdLCBUWzBdLCAmcjIsICZy
MyApOyBUKz1zdGVwOw0KIA0KICAgICAgICAgICAgICAgcjAgICAgID0gKHgwWzFdICsgeDFbMV0p
Pj4xOw0KICAgICAgICAgICAgICAgcjEgICAgID0gKHgwWzBdIC0geDFbMF0pPj4xOw0K


--- >8 ----
List archives:  http://www.xiph.org/archives/
Ogg project homepage: http://www.xiph.org/ogg/
To unsubscribe from this list, send a message to 'tremor-request at xiph.org'
containing only the word 'unsubscribe' in the body.  No subject is needed.
Unsubscribe messages sent to the list will be ignored/filtered.


More information about the Tremor mailing list