Part Number: AM4379
Other Parts Discussed in Thread: SYSBIOS
Tool/software: Code Composer Studio
Dear support,
I have strange behavior with math.h GNU pow() function.
It chresh with "ti.sysbios.family.arm.exc.Exception: line 209: E_undefinedInstruction"
I'm not assembler expert so please help me understand what is going on....
...
dTmp = 1.0;
dTmp += (double)indexOrder;
gainBn[x] = pow(dTmp, (double)-1.5);
...
make asm code:
1138 dTmp = 1.0;
8003e150: E3A02000 mov r2, #0
8003e154: E3A03000 mov r3, #0
8003e158: E3433FF0 movt r3, #0x3ff0
8003e15c: E14B21FC strd r2, r3, [r11, #-0x1c]
1139 dTmp += (double)indexOrder;
8003e160: E51B3010 ldr r3, [r11, #-0x10]
8003e164: EE073A90 vmov s15, r3
8003e168: EEF80BE7 vcvt.f64.s32 d16, s15
8003e16c: ED5B1B07 vldr d17, [r11, #-0x1c]
8003e170: EE710BA0 vadd.f64 d16, d17, d16
8003e174: ED4B0B07 vstr d16, [r11, #-0x1c]
1140 gainBn[x] = pow(dTmp, (double)-1.5);
8003e178: ED1B0B07 vldr d0, [r11, #-0x1c]
8003e17c: EEBF1B08 vmov.f64 d1, #-1.500000e+00
8003e180: EB02B21A bl pow
AND IN POW() FUNCTION:
pow():
800ea9f0: E92D4030 push {r4, r5, lr}
800ea9f4: ED2D8B08 vpush {d8, d9, d10, d11}
800ea9f8: E24DD02C sub sp, sp, #0x2c
800ea9fc: EEB0AB40 vmov.f64 d10, d0
800eaa00: EEB09B41 vmov.f64 d9, d1
800eaa04: EB0005E7 bl __ieee754_pow
800eaa08: E59F43B8 ldr r4, [pc, #0x3b8]
800eaa0c: E1D430D0 ldrsb r3, [r4]
....
fail on :
800ea9fc: EEB0AB40 vmov.f64 d10, d0
So why vmov.f64 is undefined instruction?
Also I wonder how I can see dX registers for debuging... ( ccsv7).. In "Registers" they are not visible...
Best Regards,
Mare