From 3e0123ca032169ffaa67652da8da633ba92307be Mon Sep 17 00:00:00 2001 From: David Given Date: Wed, 5 Jun 2013 23:57:23 +0100 Subject: [PATCH] Fix treatment of out-of-range values in switch csa. --HG-- branch : dtrg-videocore --- mach/vc4/libem/csa.s | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/mach/vc4/libem/csa.s b/mach/vc4/libem/csa.s index 1628199a0..25332f2a7 100644 --- a/mach/vc4/libem/csa.s +++ b/mach/vc4/libem/csa.s @@ -17,17 +17,20 @@ add r0, gp ld r2, 4 (r0) ! check lower bound - cmp r1, r2 - mov.lo r1, r2 ! r1 = min(r1, r2) + + b.lo r1, r2, default ! jump to default if r1 < r2 sub r1, r2 ! adjust value to be 0-based ld r2, 8 (r0) ! check upper bound - cmp r1, r2 - mov.hi r1, r2 ! r1 = max(r1, r2) + b.hi r1, r2, default ! jump to default if r1 > r2 add r1, #3 +go: ld r1, (r0, r1) ! load destination address add r1, gp b r1 ! ...and go +default: + mov r1, #0 ! index of default value + b go -- 2.34.1