Skip to content

tbuffer_load_format_x address calculation #24

@tspeterkim

Description

@tspeterkim

For the test_300 unit test, the gold trace is:

tbuffer_load_format_x  v9, v0, s[0:3], s6 offen offset:29 format:[BUF_DATA_FORMAT_32,BUF_NUM_FORMAT_UNORM] // 0000001C: E820101D 06000900
t0: V9<=(1)(-2037788549,-5.184e-35f) t1: V9<=(1)(-203778854 ...

Just from the instruction offset of 29, the final address should be something larger or equal to 29 but the gold trace says it is 1.

The RTL corresponding to the address calculation looks correct:

assign out_temp = `BASE_VALUE + scalar_source_b + imm_value0 + (off_en ? {12'b0, vector_source_b} : 48'd0) + (`STRIDE_VALUE * (tid + (idx_en ? vector_source_b : 48'b0)));

And this matches with the equation given in the ISA in 8.1.1.

How is the gold trace able to calculate the address as 1? Is the gold trace wrong here?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions