mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-19 18:24:14 +08:00
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: Dave Airlie <airlied@redhat.com> Signed-off-by: Grazvydas Ignotas <notasas@gmail.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
e5b69da6ba
commit
7874d3901d
@ -2299,11 +2299,10 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p,
|
||||
DRM_ERROR("bad PACKET3_SET_CONFIG_REG\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
for (i = 0; i < pkt->count; i++) {
|
||||
reg = start_reg + (4 * i);
|
||||
for (reg = start_reg, idx++; reg <= end_reg; reg += 4, idx++) {
|
||||
if (evergreen_is_safe_reg(p, reg))
|
||||
continue;
|
||||
r = evergreen_cs_handle_reg(p, reg, idx + 1 + i);
|
||||
r = evergreen_cs_handle_reg(p, reg, idx);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
@ -2317,11 +2316,10 @@ static int evergreen_packet3_check(struct radeon_cs_parser *p,
|
||||
DRM_ERROR("bad PACKET3_SET_CONTEXT_REG\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
for (i = 0; i < pkt->count; i++) {
|
||||
reg = start_reg + (4 * i);
|
||||
for (reg = start_reg, idx++; reg <= end_reg; reg += 4, idx++) {
|
||||
if (evergreen_is_safe_reg(p, reg))
|
||||
continue;
|
||||
r = evergreen_cs_handle_reg(p, reg, idx + 1 + i);
|
||||
r = evergreen_cs_handle_reg(p, reg, idx);
|
||||
if (r)
|
||||
return r;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user