small speedup

This commit is contained in:
bg 2009-04-28 20:11:12 +00:00
parent 55961d7663
commit 58cf280bb7
1 changed files with 12 additions and 2 deletions

View File

@ -27,8 +27,10 @@
#include <stdint.h>
#include <string.h>
#include <avr/pgmspace.h>
#include "bmw_small.h"
#define SHL32(a,n) ((a)<<(n))
#define SHR32(a,n) ((a)>>(n))
#define ROTL32(a,n) (((a)<<(n))|((a)>>(32-(n))))
@ -164,11 +166,18 @@ uint32_t bmw_small_r7(uint32_t x){
return r;
}
#define K 0x05555555L
uint32_t k_lut[] PROGMEM = {
16L*K, 17L*K, 18L*K, 19L*K, 20L*K, 21L*K, 22L*K, 23L*K,
24L*K, 25L*K, 26L*K, 27L*K, 28L*K, 29L*K, 30L*K, 31L*K
};
uint32_t bmw_small_expand1(uint8_t j, const uint32_t* q, const void* m){
uint32_t(*s[])(uint32_t) = {bmw_small_s1, bmw_small_s2, bmw_small_s3, bmw_small_s0};
uint32_t r;
uint8_t i;
r = 0x05555555*(j+16);
/* r = 0x05555555*(j+16); */
r = pgm_read_dword(k_lut+j);
for(i=0; i<16; ++i){
r += s[i%4](q[j+i]);
}
@ -184,7 +193,8 @@ uint32_t bmw_small_expand2(uint8_t j, const uint32_t* q, const void* m){
bmw_small_r7};
uint32_t r;
uint8_t i;
r = 0x05555555*(j+16);
/* r = 0x05555555*(j+16); */
r = pgm_read_dword(k_lut+j);
for(i=0; i<14; i+=2){
r += q[j+i];
}