Commit 7874d390 authored by Grazvydas Ignotas's avatar Grazvydas Ignotas Committed by Alex Deucher

drm/radeon: refactor register check loop

After this patch the register check loop does the same thing as before,
except that now gcc does better job optimizing it: it now sees that
end_reg was already checked against PACKET3_SET_CONTEXT_REG_END and can
optimize REG_SAFE_BM_SIZE comparison out of evergreen_is_safe_reg()
as (PACKET3_SET_CONTEXT_REG_END >> 7) < REG_SAFE_BM_SIZE.
Reviewed-by: default avatarDave Airlie <airlied@redhat.com>
Signed-off-by: default avatarGrazvydas Ignotas <notasas@gmail.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent e5b69da6
...@@ -2299,11 +2299,10 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p, ...@@ -2299,11 +2299,10 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p,
DRM_ERROR("bad PACKET3_SET_CONFIG_REG\n"); DRM_ERROR("bad PACKET3_SET_CONFIG_REG\n");
return -EINVAL; return -EINVAL;
} }
for (i = 0; i < pkt->count; i++) { for (reg = start_reg, idx++; reg <= end_reg; reg += 4, idx++) {
reg = start_reg + (4 * i);
if (evergreen_is_safe_reg(p, reg)) if (evergreen_is_safe_reg(p, reg))
continue; continue;
r = evergreen_cs_handle_reg(p, reg, idx + 1 + i); r = evergreen_cs_handle_reg(p, reg, idx);
if (r) if (r)
return r; return r;
} }
...@@ -2317,11 +2316,10 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p, ...@@ -2317,11 +2316,10 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p,
DRM_ERROR("bad PACKET3_SET_CONTEXT_REG\n"); DRM_ERROR("bad PACKET3_SET_CONTEXT_REG\n");
return -EINVAL; return -EINVAL;
} }
for (i = 0; i < pkt->count; i++) { for (reg = start_reg, idx++; reg <= end_reg; reg += 4, idx++) {
reg = start_reg + (4 * i);
if (evergreen_is_safe_reg(p, reg)) if (evergreen_is_safe_reg(p, reg))
continue; continue;
r = evergreen_cs_handle_reg(p, reg, idx + 1 + i); r = evergreen_cs_handle_reg(p, reg, idx);
if (r) if (r)
return r; return r;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment