소스 검색

Fix missing DSP instruction alternates on Teensy LC

dds
PaulStoffregen 5 년 전
부모
커밋
f6b809e572
1개의 변경된 파일4개의 추가작업 그리고 4개의 파일을 삭제
  1. +4
    -4
      utility/dspinst.h

+ 4
- 4
utility/dspinst.h 파일 보기

asm volatile("smmul %0, %1, %2" : "=r" (out) : "r" (a), "r" (b)); asm volatile("smmul %0, %1, %2" : "=r" (out) : "r" (a), "r" (b));
return out; return out;
#elif defined(KINETISL) #elif defined(KINETISL)
return 0; // TODO....
return ((int64_t)a * (int64_t)b) >> 32;
#endif #endif
} }


asm volatile("smmulr %0, %1, %2" : "=r" (out) : "r" (a), "r" (b)); asm volatile("smmulr %0, %1, %2" : "=r" (out) : "r" (a), "r" (b));
return out; return out;
#elif defined(KINETISL) #elif defined(KINETISL)
return 0; // TODO....
return (((int64_t)a * (int64_t)b) + 0x8000000) >> 32;
#endif #endif
} }


asm volatile("smmlar %0, %2, %3, %1" : "=r" (out) : "r" (sum), "r" (a), "r" (b)); asm volatile("smmlar %0, %2, %3, %1" : "=r" (out) : "r" (sum), "r" (a), "r" (b));
return out; return out;
#elif defined(KINETISL) #elif defined(KINETISL)
return 0; // TODO....
return sum + ((((int64_t)a * (int64_t)b) + 0x8000000) >> 32);
#endif #endif
} }


asm volatile("smmlsr %0, %2, %3, %1" : "=r" (out) : "r" (sum), "r" (a), "r" (b)); asm volatile("smmlsr %0, %2, %3, %1" : "=r" (out) : "r" (sum), "r" (a), "r" (b));
return out; return out;
#elif defined(KINETISL) #elif defined(KINETISL)
return 0; // TODO....
return sum - ((((int64_t)a * (int64_t)b) + 0x8000000) >> 32);
#endif #endif
} }



Loading…
취소
저장