x86-64 Floating-Point Registers

TotalView displays the x86-64 floating point registers in the Registers view. The next table describes how TotalView treats each floating-point register, and the actions you can take with each register.

Register

Description

Data Type

Edit

Dive

Specify in Expression

ST0

ST(0)

$extended

yes

yes

$st0

ST1

ST(1)

$extended

yes

yes

$st1

ST2

ST(2)

$extended

yes

yes

$st2

ST3

ST(3)

$extended

yes

yes

$st3

ST4

ST(4)

$extended

yes

yes

$st4

ST5

ST(5)

$extended

yes

yes

$st5

ST6

ST(6)

$extended

yes

yes

$st6

ST7

ST(7)

$extended

yes

yes

$st7

FPCR

Floating-point control register

$int

yes

no

$fpcr

FPSR

Floating-point status register

$int

no

no

$fpsr

FPTAG

Tag word

$int

no

no

$fptag

FPOP

Floating-point operation

$int

no

no

$fpop

FPI

Instruction address

$int

no

no

$fpi

FPD

Data address

$int

no

no

$fpd

MXCSR

SSE status and control

$int

yes

no

$mxcsr

MXCSR_MASK

MXCSR mask

$int

no

no

$mxcsr_ mask

XMM0_L  ... XMM7_L

Streaming SIMD -Extension: left half

$long

yes

yes

$xmm0_l  ... $xmm7_l

XMM0_H  ... XMM7_H

Streaming SIMD -Extension: right half

$long

yes

yes

$xmm0_h  ... $xmm7_h

XMM8_L  ... XMM15_L

Streaming SIMD -Extension: left half

$long

yes

yes

$xmm8_l  ... $xmm15_l

XMM8_H  ... XMM15_H

Streaming SIMD -Extension: right half

$long

yes

yes

$xmm8_h  ... $xmm15_h

The x86-64 has 16 128-bit registers that are used by SSE and SSE2 instructions. TotalView displays these as 32 64-bit registers. These registers can be used in the following ways: 16 bytes, 8 words, 2 longs, 4 floating point, 2 double, or a single 128-bit value. TotalView shows each of these hardware registers as two $long registers. To change the type, dive and then edit the type in the data window to be an array of the type you want. For example, cast it to “$char[16]”, “$float[4], and so on.