Skip to content

Commit e7e3c5c

Browse files
mansrmstorsjo
authored andcommitted
stagefright aacenc: Fix inline asm constraints
Output-only parameters should use =r or =&r constrains, never +r. This fixes a lot of warnings about the variable 'result' being used uninitialized. Change-Id: Ie689fce8c6ecd874d4fc66e87687c67551d9ab6a
1 parent b4cee0f commit e7e3c5c

File tree

1 file changed

+15
-15
lines changed
  • media/libstagefright/codecs/aacenc/basic_op

1 file changed

+15
-15
lines changed

media/libstagefright/codecs/aacenc/basic_op/basic_op.h

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ __inline Word32 ASM_L_shl(Word32 L_var1, Word16 var2)
245245
"MOV %[result], %[L_var1], ASL %[var2] \n"
246246
"TEQ r2, %[result], ASR %[var2]\n"
247247
"EORNE %[result],r3,r2,ASR#31\n"
248-
:[result]"+r"(result)
248+
:[result]"=&r"(result)
249249
:[L_var1]"r"(L_var1), [var2]"r"(var2)
250250
:"r2", "r3"
251251
);
@@ -277,7 +277,7 @@ __inline Word32 ASM_shl(Word32 L_var1, Word16 var2)
277277
"RSB r3,r3,r3,LSL #15 \n"
278278
"TEQ r2, %[result], ASR #31 \n"
279279
"EORNE %[result], r3, %[result],ASR #31"
280-
:[result]"+r"(result)
280+
:[result]"=r"(result)
281281
:[L_var1]"r"(L_var1), [var2]"r"(var2)
282282
:"r2", "r3"
283283
);
@@ -296,13 +296,13 @@ __inline Word16 saturate(Word32 L_var1)
296296
#if ARMV5TE_SAT
297297
Word16 result;
298298
asm volatile (
299-
"MOV %[result], %[L_var1]\n"
300299
"MOV r3, #1\n"
301300
"MOV r2,%[L_var1],ASR#15\n"
302301
"RSB r3, r3, r3, LSL #15\n"
303302
"TEQ r2,%[L_var1],ASR#31\n"
304303
"EORNE %[result],r3,%[L_var1],ASR#31\n"
305-
:[result]"+r"(result)
304+
"MOVEQ %[result], %[L_var1]\n"
305+
:[result]"=r"(result)
306306
:[L_var1]"r"(L_var1)
307307
:"r2", "r3"
308308
);
@@ -423,7 +423,7 @@ __inline Word32 L_mult(Word16 var1, Word16 var2)
423423
asm volatile(
424424
"SMULBB %[result], %[var1], %[var2] \n"
425425
"QADD %[result], %[result], %[result] \n"
426-
:[result]"+r"(result)
426+
:[result]"=r"(result)
427427
:[var1]"r"(var1), [var2]"r"(var2)
428428
);
429429
return result;
@@ -454,7 +454,7 @@ __inline Word32 L_msu (Word32 L_var3, Word16 var1, Word16 var2)
454454
"SMULBB %[result], %[var1], %[var2] \n"
455455
"QADD %[result], %[result], %[result] \n"
456456
"QSUB %[result], %[L_var3], %[result]\n"
457-
:[result]"+r"(result)
457+
:[result]"=&r"(result)
458458
:[L_var3]"r"(L_var3), [var1]"r"(var1), [var2]"r"(var2)
459459
);
460460
return result;
@@ -476,7 +476,7 @@ __inline Word32 L_sub(Word32 L_var1, Word32 L_var2)
476476
Word32 result;
477477
asm volatile(
478478
"QSUB %[result], %[L_var1], %[L_var2]\n"
479-
:[result]"+r"(result)
479+
:[result]"=r"(result)
480480
:[L_var1]"r"(L_var1), [L_var2]"r"(L_var2)
481481
);
482482
return result;
@@ -596,7 +596,7 @@ __inline Word16 add (Word16 var1, Word16 var2)
596596
"RSB r3, r3, r3, LSL, #15\n"
597597
"TEQ r2, %[result], ASR #31\n"
598598
"EORNE %[result], r3, %[result], ASR #31"
599-
:[result]"+r"(result)
599+
:[result]"=r"(result)
600600
:[var1]"r"(var1), [var2]"r"(var2)
601601
:"r2", "r3"
602602
);
@@ -626,7 +626,7 @@ __inline Word16 sub(Word16 var1, Word16 var2)
626626
"MOV r2, %[var1], ASR #15 \n"
627627
"TEQ r2, %[var1], ASR #31 \n"
628628
"EORNE %[result], r3, %[result], ASR #31 \n"
629-
:[result]"+r"(result)
629+
:[result]"=&r"(result)
630630
:[var1]"r"(var1), [var2]"r"(var2)
631631
:"r2", "r3"
632632
);
@@ -692,7 +692,7 @@ __inline Word16 mult (Word16 var1, Word16 var2)
692692
"MOV r2, %[result], ASR #15\n"
693693
"TEQ r2, %[result], ASR #31\n"
694694
"EORNE %[result], r3, %[result], ASR #31 \n"
695-
:[result]"+r"(result)
695+
:[result]"=r"(result)
696696
:[var1]"r"(var1), [var2]"r"(var2)
697697
:"r2", "r3"
698698
);
@@ -728,7 +728,7 @@ __inline Word16 norm_s (Word16 var1)
728728
"MOVEQ %[result], #0\n"
729729
"CMP r2, #-1\n"
730730
"MOVEQ %[result], #15\n"
731-
:[result]"+r"(result)
731+
:[result]"=r"(result)
732732
:[var1]"r"(var1)
733733
:"r2"
734734
);
@@ -774,7 +774,7 @@ __inline Word16 norm_l (Word32 L_var1)
774774
"CLZNE %[result], %[L_var1]\n"
775775
"SUBNE %[result], %[result], #1\n"
776776
"MOVEQ %[result], #0\n"
777-
:[result]"+r"(result)
777+
:[result]"=r"(result)
778778
:[L_var1]"r"(L_var1)
779779
);
780780
return result;
@@ -983,7 +983,7 @@ __inline Word16 round16(Word32 L_var1)
983983
"MOV r1,#0x00008000\n"
984984
"QADD %[result], %[L_var1], r1\n"
985985
"MOV %[result], %[result], ASR #16 \n"
986-
:[result]"+r"(result)
986+
:[result]"=r"(result)
987987
:[L_var1]"r"(L_var1)
988988
:"r1"
989989
);
@@ -1009,7 +1009,7 @@ __inline Word32 L_mac (Word32 L_var3, Word16 var1, Word16 var2)
10091009
"SMULBB %[result], %[var1], %[var2]\n"
10101010
"QADD %[result], %[result], %[result]\n"
10111011
"QADD %[result], %[result], %[L_var3]\n"
1012-
:[result]"+r"(result)
1012+
:[result]"=&r"(result)
10131013
: [L_var3]"r"(L_var3), [var1]"r"(var1), [var2]"r"(var2)
10141014
);
10151015
return result;
@@ -1031,7 +1031,7 @@ __inline Word32 L_add (Word32 L_var1, Word32 L_var2)
10311031
Word32 result;
10321032
asm volatile(
10331033
"QADD %[result], %[L_var1], %[L_var2]\n"
1034-
:[result]"+r"(result)
1034+
:[result]"=r"(result)
10351035
:[L_var1]"r"(L_var1), [L_var2]"r"(L_var2)
10361036
);
10371037
return result;

0 commit comments

Comments
 (0)