embeded/i.mx 8m plus
missed: not vectorized: relevant stmt not supported:
구차니
2023. 8. 31. 10:33
cortex-a53 에서 neon 으로 실수 나누기를 하는데
이상하게 적용이 안되서 확인중
소스는 아래 한줄인데 stdev_val은 앞서 단계에서 계산한 변수라 그런가
scope 문제로 인해서 안될 것 같진 않은데
int tempval = (int)((value - abs_avg) / (int)stdev_val); |
아무튼 에러는 아래와 같이. 332 라인은 for() 337은 위의 소스인데
modules/m7_adc.c:332:27: missed: couldn't vectorize loop modules/m7_adc.c:337:11: missed: not vectorized: relevant stmt not supported: tempval_168 = _73 / stdev_val_162; |
얘 되고
int tempval = (int)((double)(value - abs_avg) / (double)stdev_val); |
얘도 된다.
int tempval = (int)((value - abs_avg) / (double)stdev_val); |
나누기 연산에서 피 연산자가 int 형이면 안되고, double 형이면 된다라..
아래 문서를 참조해도 딱히 divide 연산자에 대한 이야기는 없고
cortex-a53이라면.. cortex-a9도 아니고.. hardware divider가 없을리도 없을 것 같은데.
아무튼.. 의외의 점이라면 예제코드 중에 곱셈은 있어도 나눗셈은 없다. (에이 설마..)
[링크 : https://gcc.gnu.org/projects/tree-ssa/vectorization.html]