|
From: <sv...@va...> - 2016-10-05 14:16:33
|
Author: petarj
Date: Wed Oct 5 15:16:25 2016
New Revision: 16018
Log:
mips: replace use of (d)addi with (d)addiu
Replace use of daddi/addi with daddiu/addiu.
This is more R6-friendly and we actually want to use the instructions
that do not cause integer overflow exception.
Patch by Vicente Olivert Riera.
Related issue - BZ#356112.
Modified:
trunk/coregrind/m_dispatch/dispatch-mips32-linux.S
trunk/coregrind/m_dispatch/dispatch-mips64-linux.S
trunk/coregrind/m_libcsetjmp.c
trunk/coregrind/m_syswrap/syswrap-mips64-linux.c
trunk/coregrind/m_trampoline.S
trunk/helgrind/tests/tc08_hbl2.c
Modified: trunk/coregrind/m_dispatch/dispatch-mips32-linux.S
==============================================================================
--- trunk/coregrind/m_dispatch/dispatch-mips32-linux.S (original)
+++ trunk/coregrind/m_dispatch/dispatch-mips32-linux.S Wed Oct 5 15:16:25 2016
@@ -196,7 +196,7 @@
addu $13, $13, $14
lw $12, 0($13) /* t3 = VG_(tt_fast)[hash] :: ULong* */
- addi $13, $13, 4
+ addiu $13, $13, 4
lw $25, 0($13) /* little-endian, so comparing 1st 32bit word */
nop
Modified: trunk/coregrind/m_dispatch/dispatch-mips64-linux.S
==============================================================================
--- trunk/coregrind/m_dispatch/dispatch-mips64-linux.S (original)
+++ trunk/coregrind/m_dispatch/dispatch-mips64-linux.S Wed Oct 5 15:16:25 2016
@@ -196,7 +196,7 @@
daddu $13, $13, $14
ld $12, 0($13) /* t3 = VG_(tt_fast)[hash] :: ULong* */
- daddi $13, $13, 8
+ daddiu $13, $13, 8
ld $25, 0($13) /* little-endian, so comparing 1st 32bit word */
nop
Modified: trunk/coregrind/m_libcsetjmp.c
==============================================================================
--- trunk/coregrind/m_libcsetjmp.c (original)
+++ trunk/coregrind/m_libcsetjmp.c Wed Oct 5 15:16:25 2016
@@ -594,7 +594,7 @@
/* Checking whether second argument is zero. */
" bnez $a1, 1f \n\t"
" nop \n\t"
-" addi $a1, $a1, 1 \n\t" /* We must return 1 if val=0. */
+" addiu $a1, $a1, 1 \n\t" /* We must return 1 if val=0. */
"1: \n\t"
" move $v0, $a1 \n\t" /* Return value of second argument. */
" j $ra \n\t"
Modified: trunk/coregrind/m_syswrap/syswrap-mips64-linux.c
==============================================================================
--- trunk/coregrind/m_syswrap/syswrap-mips64-linux.c (original)
+++ trunk/coregrind/m_syswrap/syswrap-mips64-linux.c Wed Oct 5 15:16:25 2016
@@ -173,7 +173,7 @@
" ld $30, 8($29)\n"
" ld $28, 16($29)\n"
" jr $31\n"
-" daddi $29,$29, 32\n"
+" daddiu $29,$29, 32\n"
".previous\n"
);
Modified: trunk/coregrind/m_trampoline.S
==============================================================================
--- trunk/coregrind/m_trampoline.S (original)
+++ trunk/coregrind/m_trampoline.S Wed Oct 5 15:16:25 2016
@@ -1278,8 +1278,8 @@
//la $a0, string
j strlen_cond
strlen_loop:
- addi $v0, $v0, 1
- addi $a0, $a0, 1
+ addiu $v0, $v0, 1
+ addiu $a0, $a0, 1
strlen_cond:
lbu $t0, ($a0)
bne $t0, $zero, strlen_loop
Modified: trunk/helgrind/tests/tc08_hbl2.c
==============================================================================
--- trunk/helgrind/tests/tc08_hbl2.c (original)
+++ trunk/helgrind/tests/tc08_hbl2.c Wed Oct 5 15:16:25 2016
@@ -125,11 +125,11 @@
# define INC(_lval,_lqual) \
__asm__ __volatile__ ( \
"L1xyzzy1" _lqual":\n" \
- " move $t0, %0\n" \
- " ll $t1, 0($t0)\n" \
- " addi $t1, $t1, 1\n" \
- " sc $t1, 0($t0)\n" \
- " beqz $t1, L1xyzzy1" _lqual \
+ " move $t0, %0\n" \
+ " ll $t1, 0($t0)\n" \
+ " addiu $t1, $t1, 1\n" \
+ " sc $t1, 0($t0)\n" \
+ " beqz $t1, L1xyzzy1" _lqual \
: /*out*/ : /*in*/ "r"(&(_lval)) \
: /*trash*/ "t0", "t1", "memory" \
)
|