diff options
author | jinbo <jinbo@loongson.cn> | 2025-07-25 13:48:56 +0800 |
---|---|---|
committer | jinboson <jinbo-hf@loongson.cn> | 2025-09-16 01:08:47 +0000 |
commit | 0c81b441ef052f41eab522d353249b861fb332c1 (patch) | |
tree | d76ed3b40c5efbb896a2b8d55ad82dbd61b89390 | |
parent | 299c612f6f322aecbc3d047d416bb3b6f973513f (diff) |
LASX: Compute loop_shift
Part-of: <https://gitlab.freedesktop.org/gstreamer/orc/-/merge_requests/248>
-rw-r--r-- | orc/loongarch/orclasx-internal.h | 1 | ||||
-rw-r--r-- | orc/loongarch/orclasxcompiler.c | 24 |
2 files changed, 24 insertions, 1 deletions
diff --git a/orc/loongarch/orclasx-internal.h b/orc/loongarch/orclasx-internal.h index e0d206c..46b2aa0 100644 --- a/orc/loongarch/orclasx-internal.h +++ b/orc/loongarch/orclasx-internal.h @@ -36,6 +36,7 @@ ORC_BEGIN_DECLS /* orclasxcompiler.c */ ORC_INTERNAL void orc_lasx_compiler_init (OrcCompiler * c); ORC_INTERNAL void orc_lasx_compiler_assemble (OrcCompiler * c); +ORC_INTERNAL void orc_lasx_compiler_compute_loop_shift (OrcCompiler *c); /* orclasxrules.c */ ORC_INTERNAL void orc_lasx_rules_init (OrcTarget * target); /* orclasxtarget.c */ diff --git a/orc/loongarch/orclasxcompiler.c b/orc/loongarch/orclasxcompiler.c index 175dc1c..16e47af 100644 --- a/orc/loongarch/orclasxcompiler.c +++ b/orc/loongarch/orclasxcompiler.c @@ -83,7 +83,29 @@ orc_lasx_compiler_init (OrcCompiler *c) } void +orc_lasx_compiler_compute_loop_shift (OrcCompiler *c) +{ + switch (c->max_var_size) { + case 1: + c->loop_shift = 5; + break; + case 2: + c->loop_shift = 4; + break; + case 4: + c->loop_shift = 3; + break; + case 8: + c->loop_shift = 2; + break; + default: + ORC_ERROR ("unhandled max var size %d", c->max_var_size); + break; + } +} + +void orc_lasx_compiler_assemble (OrcCompiler *c) { - ORC_ASSERT (FALSE); /* TODO */ + orc_lasx_compiler_compute_loop_shift (c); } |