diff --git a/src/panfrost/compiler/bifrost/bi_disasm.h b/src/panfrost/compiler/bifrost/bi_disasm.h new file mode 100644 index 00000000000..7d38380df01 --- /dev/null +++ b/src/panfrost/compiler/bifrost/bi_disasm.h @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2019 Connor Abbott + * Copyright (C) 2019 Lyude Paul + * Copyright (C) 2019 Ryan Houdek + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice (including the next + * paragraph) shall be included in all copies or substantial portions of the + * Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL + * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +#ifndef __BI_DISASM_H +#define __BI_DISASM_H + +#include +#include +#include +#include + +struct bi_constants; +struct bifrost_regs; + +void bi_disasm_fma(FILE *fp, unsigned bits, struct bifrost_regs *srcs, + struct bifrost_regs *next_regs, unsigned staging_register, + unsigned branch_offset, struct bi_constants *consts, + bool first); + +void bi_disasm_add(FILE *fp, unsigned bits, struct bifrost_regs *srcs, + struct bifrost_regs *next_regs, unsigned staging_register, + unsigned branch_offset, struct bi_constants *consts, + bool first); + +void bi_disasm_dest_fma(FILE *fp, struct bifrost_regs *next_regs, bool first); +void bi_disasm_dest_add(FILE *fp, struct bifrost_regs *next_regs, bool first); + +void dump_src(FILE *fp, unsigned src, struct bifrost_regs srcs, + unsigned branch_offset, struct bi_constants *consts, bool isFMA); + +#endif \ No newline at end of file diff --git a/src/panfrost/compiler/bifrost/disassemble.c b/src/panfrost/compiler/bifrost/disassemble.c index 57c4611c9d4..56eca97c18c 100644 --- a/src/panfrost/compiler/bifrost/disassemble.c +++ b/src/panfrost/compiler/bifrost/disassemble.c @@ -32,9 +32,11 @@ #include "util/compiler.h" #include "util/macros.h" +#include "bi_disasm.h" #include "bi_print_common.h" #include "bifrost.h" #include "disassemble.h" +#include "../bifrost.h" // return bits (high, lo] static uint64_t diff --git a/src/panfrost/compiler/bifrost/disassemble.h b/src/panfrost/compiler/bifrost/disassemble.h index 597aaa541ab..de4c1ddd05d 100644 --- a/src/panfrost/compiler/bifrost/disassemble.h +++ b/src/panfrost/compiler/bifrost/disassemble.h @@ -23,31 +23,14 @@ * SOFTWARE. */ -#ifndef __BI_DISASM_H -#define __BI_DISASM_H +#ifndef __BI_DISASSEMBLE_H +#define __BI_DISASSEMBLE_H #include #include #include #include -#include "../bifrost.h" void disassemble_bifrost(FILE *fp, const void *code, size_t size, bool verbose); -void bi_disasm_fma(FILE *fp, unsigned bits, struct bifrost_regs *srcs, - struct bifrost_regs *next_regs, unsigned staging_register, - unsigned branch_offset, struct bi_constants *consts, - bool first); - -void bi_disasm_add(FILE *fp, unsigned bits, struct bifrost_regs *srcs, - struct bifrost_regs *next_regs, unsigned staging_register, - unsigned branch_offset, struct bi_constants *consts, - bool first); - -void bi_disasm_dest_fma(FILE *fp, struct bifrost_regs *next_regs, bool first); -void bi_disasm_dest_add(FILE *fp, struct bifrost_regs *next_regs, bool first); - -void dump_src(FILE *fp, unsigned src, struct bifrost_regs srcs, - unsigned branch_offset, struct bi_constants *consts, bool isFMA); - #endif diff --git a/src/panfrost/compiler/gen_disasm.py b/src/panfrost/compiler/gen_disasm.py index 5b699930e3b..10a524321ad 100644 --- a/src/panfrost/compiler/gen_disasm.py +++ b/src/panfrost/compiler/gen_disasm.py @@ -349,6 +349,8 @@ def disasm_op(name, op): print('#include "util/macros.h"') print('#include "bifrost/disassemble.h"') +print('#include "bifrost/bi_disasm.h"') +print('#include "bifrost.h"') states = expand_states(instructions) print('#define _BITS(bits, pos, width) (((bits) >> (pos)) & ((1 << (width)) - 1))')