tests/tcg/hexagon: fix underspecifed asm constraints
There are two test cases where the inline asm doesn't have the correct constraints causing them to fail. In misc.c, the 'result' output needs the early clobber modifier since the rest of the inputs are read after assignment to the output register. In mem_noshuf.c, the register r7 is written to but not specified in the clobber list. Signed-off-by: Mukilan Thiyagarajan <quic_mthiyaga@quicinc.com> Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> Reviewed-by: Taylor Simpson <tsimpson@quicinc.com> Message-Id: <20221229081836.12130-1-quic_mthiyaga@quicinc.com>
This commit is contained in:
parent
72895676e7
commit
eaee3b6faf
@ -144,7 +144,7 @@ static inline long long pred_ld_sd_pi(int pred, long long *p, long long *q,
|
|||||||
"}:mem_noshuf\n"
|
"}:mem_noshuf\n"
|
||||||
: "=&r"(ret)
|
: "=&r"(ret)
|
||||||
: "r"(p), "r"(q), "r"(x), "r"(y), "r"(pred)
|
: "r"(p), "r"(q), "r"(x), "r"(y), "r"(pred)
|
||||||
: "p0", "memory");
|
: "r7", "p0", "memory");
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -186,10 +186,10 @@ static int L2_ploadrifnew_pi(void *p, int pred)
|
|||||||
int result;
|
int result;
|
||||||
asm volatile("%0 = #31\n\t"
|
asm volatile("%0 = #31\n\t"
|
||||||
"{\n\t"
|
"{\n\t"
|
||||||
" p0 = cmp.eq(%1, #1)\n\t"
|
" p0 = cmp.eq(%2, #1)\n\t"
|
||||||
" if (!p0.new) %0 = memw(%2++#4)\n\t"
|
" if (!p0.new) %0 = memw(%1++#4)\n\t"
|
||||||
"}\n\t"
|
"}\n\t"
|
||||||
: "=r"(result) : "r"(pred), "r"(p)
|
: "=&r"(result), "+r"(p) : "r"(pred)
|
||||||
: "p0");
|
: "p0");
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user