On Mon, Jun 18, 2012 at 11:54 PM, Ching-Tsun Chou
<[email protected]>wrote:
> In the file ptlsim/x86/decode-sse.cpp, in the function
> TraceDecoder::decode_sse(), in the first part of the "switch (op)"
> statement (i.e., the part for SSE arithmetic), shouldn't the "size"
> argument for the TransOp's lowop() and highop() be "datatype" rather than
> "sizetype" (leaving aside the special case for OPCLASS_LOGIC) for the
> floating-point operations? The "sizetype" ranges over {0,1,2,3}, for
> operation sizes {1,2,4,8} bytes. But the floating-point operations are
> either single-precision (32 bits) or double-precision (64 bits).
>
> You are right about floating point operation type to be either 32 bit or
64 bit. To simplify design in decoder, 'size' field of uop is used to
represent 'datatype' in floating point and SSE operations. So for size ==
0: its scalar single-precision operation, size == 1: its packed
single-precision operation and, size >= 2: its double-precision operation.
Take a look at 'uopimpl.cpp' file which implements uops and uses 'size'
field as 'datatype'.
The 'datatype' field is used in uop just to identify different type of
floating point operations, which can be used in pipeline for variable
latency for same uop type. But current core pipeline implementation does
not support variable latency for same uop.
- Avadh
Or did I miss something?
>
> Thanks in advance!
> - Ching Tsun
>
>
> _______________________________________________
> http://www.marss86.org
> Marss86-Devel mailing list
> [email protected]
> https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel
>
>
_______________________________________________
http://www.marss86.org
Marss86-Devel mailing list
[email protected]
https://www.cs.binghamton.edu/mailman/listinfo/marss86-devel