Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-10 Thread Andreas Arnez
On Thu, Mar 10 2016, Cary Coutant wrote: > Adrian was looking for guidance to understand what the spec says about > placement of smaller values in larger registers. He found some > guidance in the section on DW_OP_piece, but nowhere else, leading him > to ask if clang should have been using DW_OP_

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Cary Coutant
We're straying even further off topic now... >> [...] We're not discussing "how ABIs tell you how to interpret >> [location lists]". We're discussing whether the consumer is expected >> to turn to the ABI to find out how a smaller value is stored in a >> larger register. [...] > > Given that the

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Frank Ch. Eigler
Hi, Cary - > [...] We're not discussing "how ABIs tell you how to interpret > [location lists]". We're discussing whether the consumer is expected > to turn to the ABI to find out how a smaller value is stored in a > larger register. [...] Given that the ABI constraints apply only at function ca

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Robinson, Paul
> On 03/09/2016 02:53 PM, Cary Coutant wrote: > >> A value which is contained in a register larger than the size of > >> the value should be described by a DW_TAG_base_type. (DWARF 4, > >> Sect. 5.1, bottom of page 75). > >> > >> For a 32-bit float in a 128-bit container, use something like the >

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Cary Coutant
>> Sorry, Michael, but you're just muddying the waters. The >> data_bit_offset attribute is used only when "the value of an object of >> the given type does not fully occupy the storage described by a byte >> size attribute." That is not the case here -- the original question >> was about a value o

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 05:24 PM, Michael Eager wrote: There are no DWARF expressions involved here. What does the description of DW_OP_piece have to do with a DWARF description which doesn't use a DWARF expression? Oops. There is a DWARF expression in the DW_AT_location. -- Michael Eagerea...@eag

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 02:53 PM, Cary Coutant wrote: A value which is contained in a register larger than the size of the value should be described by a DW_TAG_base_type. (DWARF 4, Sect. 5.1, bottom of page 75). For a 32-bit float in a 128-bit container, use something like the following: DW_TAG_base

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Cary Coutant
> A value which is contained in a register larger than the size of > the value should be described by a DW_TAG_base_type. (DWARF 4, > Sect. 5.1, bottom of page 75). > > For a 32-bit float in a 128-bit container, use something like the following: > > DW_TAG_base_type > DW_AT_name "float" >

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 11:35 AM, Adrian Prantl wrote: On Mar 9, 2016, at 8:36 AM, Michael Eager wrote: On 03/04/2016 01:12 PM, Adrian Prantl wrote: I have a best-practice kind of question: The x86_64 System V ABI passes floating point values in the xmm0, xmm1, ... 128-bit SSE vector registers. I’m

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Wim Lewis
On Mar 4, 2016, at 2:00 PM, Robinson, Paul wrote: > I tried a CU with an int variable instead of float, and enough other > stuff to keep it from being optimized away completely. > gcc produced DW_OP_reg3, while Clang produced "DW_OP_reg3; DW_OP_piece 4" > for the same variable. > > DW_OP_piece

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 11:26 AM, Frank Ch. Eigler wrote: Hi - On Wed, Mar 09, 2016 at 11:20:38AM -0800, Michael Eager wrote: [...] Variable definitions describe where the variable is defined. If the size of the variable is different from the size of the container, it should be described as such. This h

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Adrian Prantl
> On Mar 9, 2016, at 8:36 AM, Michael Eager wrote: > > On 03/04/2016 01:12 PM, Adrian Prantl wrote: >> I have a best-practice kind of question: >> >> The x86_64 System V ABI passes floating point values in the xmm0, xmm1, ... >> 128-bit SSE vector registers. I’m wondering what the correct DWAR

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Frank Ch. Eigler
Hi - On Wed, Mar 09, 2016 at 11:20:38AM -0800, Michael Eager wrote: > [...] > Variable definitions describe where the variable is defined. > If the size of the variable is different from the size of > the container, it should be described as such. > > This has nothing to do with location lists.

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 10:50 AM, John DelSignore wrote: I think what you are saying, and I agree, is that the type of a variable is orthogonal to where (or how) the variable is stored. DWARF should not muddy the type entries with attributes that attempt to describe how a variable is stored somewhere. As

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 10:00 AM, David Blaikie wrote: On Wed, Mar 9, 2016 at 9:57 AM, Michael Eager mailto:ea...@eagercon.com>> wrote: On 03/09/2016 09:33 AM, Jakub Jelinek wrote: On Wed, Mar 09, 2016 at 08:36:44AM -0800, Michael Eager wrote: How is the "float" type described?

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread John DelSignore
Jakub Jelinek wrote: On Wed, Mar 09, 2016 at 01:24:37PM -0500, John DelSignore wrote: I agree completely with Jakub. Defining multiple "float" types that have varying byte-sizes, bit-sizes, and bit-offsets seems like a big mistake to me. The debugger has to know the ABI convention

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Jakub Jelinek
On Wed, Mar 09, 2016 at 01:24:37PM -0500, John DelSignore wrote: > I agree completely with Jakub. Defining multiple "float" types that > have varying byte-sizes, bit-sizes, and bit-offsets seems like a big > mistake to me. > > The debugger has to know the ABI conventions for the target platform. >

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread John DelSignore
Jakub Jelinek wrote: On Wed, Mar 09, 2016 at 08:36:44AM -0800, Michael Eager wrote: How is the "float" type described? A value which is contained in a register larger than the size of the value should be described by a DW_TAG_base_type. (DWARF 4, Sect. 5.1, bottom of page 75). F

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread David Blaikie
On Wed, Mar 9, 2016 at 9:57 AM, Michael Eager wrote: > On 03/09/2016 09:33 AM, Jakub Jelinek wrote: > >> On Wed, Mar 09, 2016 at 08:36:44AM -0800, Michael Eager wrote: >> >>> How is the "float" type described? >>> >>> A value which is contained in a register larger than the size of >>> the value

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/09/2016 09:33 AM, Jakub Jelinek wrote: On Wed, Mar 09, 2016 at 08:36:44AM -0800, Michael Eager wrote: How is the "float" type described? A value which is contained in a register larger than the size of the value should be described by a DW_TAG_base_type. (DWARF 4, Sect. 5.1, bottom of pa

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Jakub Jelinek
On Wed, Mar 09, 2016 at 08:36:44AM -0800, Michael Eager wrote: > How is the "float" type described? > > A value which is contained in a register larger than the size of > the value should be described by a DW_TAG_base_type. (DWARF 4, > Sect. 5.1, bottom of page 75). > > For a 32-bit float in a 1

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread David Blaikie
On Mar 9, 2016 8:36 AM, "Michael Eager" wrote: > > On 03/04/2016 01:12 PM, Adrian Prantl wrote: >> >> I have a best-practice kind of question: >> >> The x86_64 System V ABI passes floating point values in the xmm0, xmm1, ... 128-bit SSE vector registers. I’m wondering what the correct DWARF v4 (la

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Michael Eager
On 03/04/2016 01:12 PM, Adrian Prantl wrote: I have a best-practice kind of question: The x86_64 System V ABI passes floating point values in the xmm0, xmm1, ... 128-bit SSE vector registers. I’m wondering what the correct DWARF v4 (lacking the DWARF 5 type conversions) expression for a 32-bit

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-09 Thread Andreas Arnez
On Fri, Mar 04 2016, Cary Coutant wrote: > It's up to the ABI to define how smaller values are placed within a register. Right, that seems to be the common understanding. Maybe the confusion arose because the standard does not explicitly make this statement. Or did I miss it? Also, I wonder wh

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-04 Thread Adrian Prantl
>> -Original Message- >> From: Dwarf-Discuss [mailto:dwarf-discuss-boun...@lists.dwarfstd.org] On >> Behalf Of Adrian Prantl >> Sent: Friday, March 04, 2016 1:13 PM >> To: dwarf-discuss@lists.dwarfstd.org >> Subject: [Dwarf-Discuss] Representing the lo

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-04 Thread Robinson, Paul
s] Representing the location of smaller values in > vector registers > > I have a best-practice kind of question: > > The x86_64 System V ABI passes floating point values in the xmm0, xmm1, > ... 128-bit SSE vector registers. I’m wondering what the correct DWARF v4 > (lacking

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-04 Thread Wyma, Brock
From: Dwarf-Discuss [mailto:dwarf-discuss-boun...@lists.dwarfstd.org] On Behalf Of Adrian Prantl Sent: Friday, March 4, 2016 4:13 PM To: dwarf-discuss@lists.dwarfstd.org Subject: [Dwarf-Discuss] Representing the location of smaller values in vector registers I have a best-practice kind of question:

Re: [Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-04 Thread Cary Coutant
> DW_TAG_variable >DW_AT_location( reg17 ) // xmm0 = 17 >DW_AT_name( "f" ) >DW_AT_decl_file( "test.c" ) >DW_AT_decl_line( 8 ) >DW_AT_type( {0x004a} ( float ) ) > > Which causes LLDB to complain that the size of register xmm0 (128 Bits) is > different from the size of f (

[Dwarf-Discuss] Representing the location of smaller values in vector registers

2016-03-04 Thread Adrian Prantl
I have a best-practice kind of question: The x86_64 System V ABI passes floating point values in the xmm0, xmm1, ... 128-bit SSE vector registers. I’m wondering what the correct DWARF v4 (lacking the DWARF 5 type conversions) expression for a 32-bit float in xmm0 is. Given the following program