build/X86/cpu/o3/probe/lib.do.partial: In function
`std::enable_if<!std::is_void<bool>::value, bool>::type
GuestABI::callFrom<X86PseudoInstABI, bool, unsigned int, unsigned int, unsigned
long>(ThreadContext*, X86PseudoInstABI::Position&, std::function<bool
(ThreadContext*, unsigned int, unsigned int, unsigned long)>)':
/mnt/d/SparsePIM/build/X86/sim/guest_abi.hh:357: undefined reference to
`GuestABI::Argument<X86PseudoInstABI, unsigned int, void>::get(ThreadContext*,
int&)'
build/X86/cpu/o3/probe/lib.do.partial: In function
`std::enable_if<!std::is_void<bool>::value, bool>::type
GuestABI::callFrom<X86PseudoInstABI, bool, unsigned int, unsigned long,
unsigned long>(ThreadContext*, X86PseudoInstABI::Position&, std::function<bool
(ThreadContext*, unsigned int, unsigned long, unsigned long)>)':
/mnt/d/SparsePIM/build/X86/sim/guest_abi.hh:357: undefined reference to
`GuestABI::Argument<X86PseudoInstABI, unsigned int, void>::get(ThreadContext*,
int&)'
build/X86/cpu/o3/probe/lib.do.partial: In function
`std::enable_if<!std::is_void<bool>::value, bool>::type
GuestABI::callFrom<X86PseudoInstABI, bool, unsigned int, unsigned
long>(ThreadContext*, X86PseudoInstABI::Position&, std::function<bool
(ThreadContext*, unsigned int, unsigned long)>)':
/mnt/d/SparsePIM/build/X86/sim/guest_abi.hh:357: undefined reference to
`GuestABI::Argument<X86PseudoInstABI, unsigned int, void>::get(ThreadContext*,
int&)'
build/X86/cpu/o3/probe/lib.do.partial: In function
`std::enable_if<!std::is_void<bool>::value, bool>::type
GuestABI::callFrom<X86PseudoInstABI, bool, unsigned int>(ThreadContext*,
X86PseudoInstABI::Position&, std::function<bool (ThreadContext*, unsigned
int)>)':
/mnt/d/SparsePIM/build/X86/sim/guest_abi.hh:357: undefined reference to
`GuestABI::Argument<X86PseudoInstABI, unsigned int, void>::get(ThreadContext*,
int&)'
build/X86/cpu/simple/lib.do.partial: In function
`std::enable_if<!std::is_void<bool>::value, bool>::type
GuestABI::callFrom<X86PseudoInstABI, bool, unsigned int, unsigned int, unsigned
long>(ThreadContext*, X86PseudoInstABI::Position&, std::function<bool
(ThreadContext*, unsigned int, unsigned int, unsigned long)>)':
/mnt/d/SparsePIM/build/X86/sim/guest_abi.hh:357: undefined reference to
`GuestABI::Argument<X86PseudoInstABI, unsigned int, void>::get(ThreadContext*,
int&)'
build/X86/cpu/simple/lib.do.partial:/mnt/d/SparsePIM/build/X86/sim/guest_abi.hh:357:
more undefined references to `GuestABI::Argument<X86PseudoInstABI, unsigned
int, void>::get(ThreadContext*, int&)' follow
I've implemented several customized pseudo-instructions on include/gem5/m5ops.h
as follows:
bool PIMMultiplySize(sparse_mtx *A, sparse_mtx *B, sparse_mtx *C);
bool PIMAddSize(sparse_mtx *A, sparse_mtx *C);
bool PIMMergeSize(sparse_mtx *A, sparse_mtx *C, uint32_t num);
bool PIMMultiply(sparse_mtx *A, sparse_mtx *B, sparse_mtx *C);
bool PIMAdd(sparse_mtx *A, sparse_mtx *C);
bool PIMMerge(sparse_mtx *A, sparse_mtx *C, uint32_t num);
bool PIMGetSize(const char *file_path, uint32_t len, uint32_t *nrow,
uint32_t *ncol);
bool PIMGetMatrix(uint32_t rpos, uint32_t cpos, void *mtx);
bool PIMGetMatrixSize(uint32_t rpos, uint32_t cpos, void *mtx);
And the simulator implementation is on arch/x86/pseudo_inst.hh as follows:
bool PIMMultiplySize(ThreadContext *tc, Addr A, Addr B, Addr C);
bool PIMAddSize(ThreadContext *tc, Addr A, Addr C);
bool PIMMergeSize(ThreadContext *tc, Addr Int, Addr C, uint32_t num);
bool PIMMultiply(ThreadContext *tc, Addr A, Addr B, Addr C);
bool PIMAdd(ThreadContext *tc, Addr A, Addr C);
bool PIMMerge(ThreadContext *tc, Addr Int, Addr C, uint32_t num);
bool PIMGetSize(ThreadContext *tc, Addr file_path, uint32_t len, Addr nrow,
Addr ncol);
bool PIMGetMatrix(ThreadContext *tc, uint32_t rpos, uint32_t cpos, Addr mtx);
bool PIMGetMatrixSize(ThreadContext *tc, uint32_t rpos, uint32_t cpos,
Addr mtx);
I'd like to know why this linking error happens. I didn't change anything on
sim/guest_abi.hh, arch/x86/guest_abi.hh
_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users