public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
From: "Cui, Lili" <lili.cui@intel.com>
To: "Beulich, Jan" <JBeulich@suse.com>
Cc: "Lu, Hongjiu" <hongjiu.lu@intel.com>,
	"binutils@sourceware.org" <binutils@sourceware.org>
Subject: FW: [PATCH 3/8] Add tests for APX GPR32 with extend evex prefix
Date: Tue, 17 Oct 2023 15:53:28 +0000	[thread overview]
Message-ID: <SJ0PR11MB5600D8B7A243DD0721BC92F79ED6A@SJ0PR11MB5600.namprd11.prod.outlook.com> (raw)
In-Reply-To: <de8dea13-cb69-18f8-07f1-d100e718c45d@suse.com>


> > +	packusdw (%r21),%xmm6
> > +	pblendvb %xmm0,(%r22),%xmm6
> > +	pblendvb (%r22),%xmm6
> > +	pblendw $100,(%r22),%xmm6
> > +	pcmpeqq (%r22),%xmm6
> > +	pextrb $100,%xmm4,(%r22)
> > +	pextrw $100,%xmm4,(%r22)
> > +	pextrb $100,%xmm4,%r22
> 
> Would be nice to stick to strict alphabetic sorting.
> 

Done.

> > +	pextrd $100,%xmm4,%r22d
> > +	pextrd $100,%xmm4,(%r22)
> 
> pextrq?

Added.

> 
> > +	phminposuw (%r23),%xmm4
> > +	pinsrb $100,%r23,%xmm4
> > +	pinsrb $100,(%r23),%xmm4
> > +	pinsrd $100, %r23d, %xmm4
> > +	pinsrd $100,(%r23),%xmm4
> > +	pinsrq $100, %r24, %xmm4
> > +	pinsrq $100,(%r24),%xmm4
> > +	pmaxsb (%r24),%xmm6
> > +	pmaxsd (%r24),%xmm6
> > +	pmaxud (%r24),%xmm6
> > +	pmaxuw (%r24),%xmm6
> > +	pminsb (%r24),%xmm6
> > +	pminsd (%r24),%xmm6
> > +	pminud (%r24),%xmm6
> > +	pminuw (%r24),%xmm6
> > +	pmovsxbw (%r24),%xmm4
> > +	pmovsxbd (%r24),%xmm4
> > +	pmovsxbq (%r24),%xmm4
> > +	pmovsxwd (%r24),%xmm4
> > +	pmovsxwq (%r24),%xmm4
> > +	pmovsxdq (%r24),%xmm4
> > +	pmovsxbw (%r24),%xmm4
> > +	pmovzxbd (%r24),%xmm4
> > +	pmovzxbq (%r24),%xmm4
> > +	pmovzxwd (%r24),%xmm4
> > +	pmovzxwq (%r24),%xmm4
> > +	pmovzxdq (%r24),%xmm4
> > +	pmuldq (%r24),%xmm4
> > +	pmulld (%r24),%xmm4
> > +	roundpd $100,(%r24),%xmm6
> > +	roundps $100,(%r24),%xmm6
> > +	roundsd $100,(%r24),%xmm6
> > +	roundss $100,(%r24),%xmm6
> > +	pcmpgtq (%r25),%xmm4
> > +	pcmpestri $100,(%r25),%xmm6
> > +	pcmpestrm $100,(%r25),%xmm6
> > +	pcmpistri $100,(%r25),%xmm6
> > +	pcmpistrm $100,(%r25),%xmm6
> 
> For these last five - again would be nice to stick to strict alphabetic sorting.
> (I was almost going to as where pcmpeqq is.)
> 

Done.

> > +#AES
> > +	aesdec (%r26),%xmm6
> > +	aesdeclast (%r26),%xmm6
> > +	aesenc (%r26),%xmm6
> > +	aesenclast (%r26),%xmm6
> > +	aesimc (%r26),%xmm6
> > +	aeskeygenassist $100,(%r26),%xmm6
> > +	pclmulqdq $100,(%r26),%xmm6
> > +	pclmullqlqdq (%r26),%xmm6
> > +	pclmulhqlqdq (%r26),%xmm6
> > +	pclmullqhqdq (%r26),%xmm6
> > +	pclmulhqhqdq (%r26),%xmm6
> > +#GFNI
> > +	gf2p8affineqb $100,(%r26),%xmm6
> > +	gf2p8affineinvqb $100,(%r26),%xmm6
> > +	gf2p8mulb (%r26),%xmm6
> > +#VEX without evex
> > +	vblendpd $7,(%r27),%xmm6,%xmm2
> > +	vblendpd $7,(%r27),%ymm6,%ymm2
> > +	vblendps $7,(%r27),%xmm6,%xmm2
> > +	vblendps $7,(%r27),%ymm6,%ymm2
> > +	vblendvpd %xmm4,(%r27),%xmm2,%xmm7
> > +	vblendvpd %ymm4,(%r27),%ymm2,%ymm7
> > +	vblendvps %xmm4,(%r27),%xmm2,%xmm7
> > +	vblendvps %ymm4,(%r27),%ymm2,%ymm7
> > +	vdppd $7,(%r27),%xmm6,%xmm2
> > +	vdpps $7,(%r27),%xmm6,%xmm2
> > +	vdpps $7,(%r27),%ymm6,%ymm2
> > +	vhaddpd (%r27),%xmm6,%xmm5
> > +	vhaddpd (%r27),%ymm6,%ymm5
> > +	vhsubps (%r27),%xmm6,%xmm5
> > +	vhsubps (%r27),%ymm6,%ymm5
> > +	vlddqu (%r27),%xmm4
> > +	vlddqu (%r27),%ymm4
> > +	vldmxcsr (%r27)
> 
> Are the designers not intending to reconsider this (and vstmxcsr), getting on
> par with {ld,st}tilecfg? Even more generally I wonder if things shouldn't remain
> less inconsistent. After all most major opcodes haven't been re-used, so
> adding (less-than-512-bit) EVEX equivalents would only seem reasonable to
> me. I'll be really curious how this asymmetry is going to be dealt with in gcc, in
> a way still permitting sane inline assembly use.
> 

For the memory conditions listed here, we may not consider extending them, but for vstmxcsr and vldmxcsr,
I raised a topic for internal discussion. The conclusion is that when apx_f is enabled, gcc will select LDMXCSR/LDMXCSR.
In GCC, we control whether each instruction supports gpr32. GCC default configuration disables gpr32 support in the inline assembler, but users can enable it and need to make sure it is correct.

> > +	vmaskmovpd (%r27),%xmm4,%xmm6
> > +	vmaskmovpd %xmm4,%xmm6,(%r27)
> > +	vmaskmovps (%r27),%xmm4,%xmm6
> > +	vmaskmovps %xmm4,%xmm6,(%r27)
> > +	vmaskmovpd (%r27),%ymm4,%ymm6
> > +	vmaskmovpd %ymm4,%ymm6,(%r27)
> > +	vmaskmovps (%r27),%ymm4,%ymm6
> > +	vmaskmovps %ymm4,%ymm6,(%r27)
> > +	vmovmskpd %xmm4,%r27d
> > +	vmovmskpd %xmm8,%r27d
> > +	vmovmskps %xmm4,%r27d
> > +	vmovmskps %ymm8,%r27d
> > +	vpblendvb %xmm4,(%r27),%xmm2,%xmm7
> > +	vpblendvb %ymm4,(%r27),%ymm2,%ymm7
> > +	vpblendw $7,(%r27),%xmm6,%xmm2
> > +	vpblendw $7,(%r27),%ymm6,%ymm2
> > +	vpcmpestri $7,(%r27),%xmm6
> > +	vpcmpestrm $7,(%r27),%xmm6
> > +	vperm2f128 $7,(%r27),%ymm6,%ymm2
> > +	vphaddd (%r27),%xmm6,%xmm7
> > +	vphaddsw (%r27),%xmm6,%xmm7
> > +	vphaddw (%r27),%xmm6,%xmm7
> > +	vphsubd (%r27),%xmm6,%xmm7
> > +	vphsubsw (%r27),%xmm6,%xmm7
> > +	vphsubw (%r27),%xmm6,%xmm7
> > +	vphaddd (%r27),%ymm6,%ymm7
> > +	vphaddsw (%r27),%ymm6,%ymm7
> > +	vphaddw (%r27),%ymm6,%ymm7
> > +	vphsubd (%r27),%ymm6,%ymm7
> > +	vphsubsw (%r27),%ymm6,%ymm7
> > +	vphsubw (%r27),%ymm6,%ymm7
> > +	vphminposuw (%r27),%xmm6
> > +	vpmovmskb %xmm4,%r27
> > +	vpmovmskb %ymm4,%r27d
> > +	vpsignb (%r27),%xmm6,%xmm7
> > +	vpsignw (%r27),%xmm6,%xmm7
> > +	vpsignd (%r27),%xmm6,%xmm7
> > +	vpsignb (%r27),%xmm6,%xmm7
> > +	vpsignw (%r27),%xmm6,%xmm7
> > +	vpsignd (%r27),%xmm6,%xmm7
> > +	vptest (%r27),%xmm6
> > +	vptest (%r27),%ymm6
> > +	vrcpps (%r27),%xmm6
> > +	vrcpps (%r27),%ymm6
> > +	vrcpss (%r27),%xmm6,%xmm6
> > +	vrsqrtps (%r27),%xmm6
> > +	vrsqrtps (%r27),%ymm6
> > +	vrsqrtss (%r27),%xmm6,%xmm6
> > +	vstmxcsr (%r27)
> > +	vtestps (%r27),%xmm6
> > +	vtestps (%r27),%ymm6
> > +	vtestpd (%r27),%xmm6
> > +	vtestps (%r27),%ymm6
> > +	vtestpd (%r27),%ymm6
> > +	vpblendd $7,(%r27),%xmm6,%xmm2
> > +	vpblendd $7,(%r27),%ymm6,%ymm2
> > +	vperm2i128 $7,(%r27),%ymm6,%ymm2
> > +	vpmaskmovd (%r27),%xmm4,%xmm6
> > +	vpmaskmovd %xmm4,%xmm6,(%r27)
> > +	vpmaskmovq (%r27),%xmm4,%xmm6
> > +	vpmaskmovq %xmm4,%xmm6,(%r27)
> > +	vpmaskmovd (%r27),%ymm4,%ymm6
> > +	vpmaskmovd %ymm4,%ymm6,(%r27)
> > +	vpmaskmovq (%r27),%ymm4,%ymm6
> > +	vpmaskmovq %ymm4,%ymm6,(%r27)
> > +	vaesimc (%r27), %xmm3
> > +	vaeskeygenassist $7,(%r27),%xmm3
> > +	vroundpd $100,(%r24),%xmm6
> > +	vroundps $100,(%r24),%xmm6
> > +	vroundsd $100,(%r24),%xmm6,%xmm3
> > +	vroundss $100,(%r24),%xmm6,%xmm3
> 
> For these I wonder if they shouldn't be accepted (with in-range immediate)
> and converted to vrndscale*. Imo the spec could even mandate (or at least
> suggest) this.
> 

Changed it to 0x00 ~ 0x0f.

> > --- /dev/null
> > +++ b/gas/testsuite/gas/i386/x86-64-apx-egpr-promote-inval.s
> > @@ -0,0 +1,18 @@
> > +# Check illegal 64bit APX EVEX promoted instructions
> > +	.text
> > +	.arch .apx_f
> 
> This doesn't have any effect (on this test), does it?
> 

Deleted.

> > --- /dev/null
> > +++ b/gas/testsuite/gas/i386/x86-64-apx-evex-egpr.s
> > @@ -0,0 +1,25 @@
> > +# Check 64bit old evex instructions use gpr32 with evex prefix
> > +encoding
> > +
> > +	.allow_index_reg
> > +	.text
> > +_start:
> > +## MRMDestMem
> > +         vextractf32x4	$1, %zmm0, (%r16,%r17)
> > +## MRMSrcMem
> > +         vbroadcasti32x4	(%r16,%r17), %zmm0
> > +## MRM0m
> > +         vprorq	$0, (%r16,%r17), %zmm0
> > +## MRM1m
> > +         vprolq	$0, (%r16,%r17), %zmm0
> > +## MRM2m
> > +         vpsrlq	$0, (%r16,%r17), %zmm0
> > +## MRM3m
> > +         vpsrldq	$0, (%r16,%r17), %zmm0
> > +## MRM4m
> > +         vpsraq	$0, (%r16,%r17), %zmm0
> > +## MRM6m
> > +         vpsllq	$0, (%r16,%r17), %zmm0
> > +## MRM7m
> > +         vpslldq	$0, (%r16,%r17), %zmm0
> > +## MRMDestReg
> > +         vextractps	$1, %xmm16, %r16d
> 
> What is the purpose of this test? Using all the same base and index registers
> isn't really covering very much. I'm also missing a GPR-is- source case (e.g.
> vpinsr*). And finally (I think I commented on this elsewhere already) can the
> comments please be made meaningful, without needing to guess what the
> acronyms are to be decoded to?
> 

Removed these comments and added new testcases.

> > --- /dev/null
> > +++ b/gas/testsuite/gas/i386/x86-64-apx-evex-promoted.s
> > @@ -0,0 +1,1464 @@
> > +# Check 64bit APX_F EVEX-Promoted instructions.
> > +
> > +	.text
> > +_start:
> > +	aadd	%r25d,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	aadd	%r31,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	aand	%r25d,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	aand	%r31,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adc	$0x7b,%r16b	 #APX_F OPC_EVEX_EVEX
> > +	adc	$0x7b,%r18w	 #APX_F OPC_EVEX_EVEX
> > +	adc	$0x7b,%r25d	 #APX_F OPC_EVEX_EVEX
> > +	adc	$0x7b,%r31	 #APX_F OPC_EVEX_EVEX
> > +	adcb	$0x7b,0x123(%r16,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adcw	$0x7b,0x123(%r16,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adcl	$0x7b,0x123(%r16,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adcq	$0x7b,0x123(%r16,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adcw	$0x7b,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adcl	$0x7b,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adcq	$0x7b,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> 
> If this 2nd triplet of adc* is useful, why no adcb? Also, like above:
> - more variation of register use would imo be better (there's no egpr
>   index register here),
> - comments want to be useful, or be dropped.
> 

Deleted these tests ( Please refer to the next comment for details), and deleted comments.

> Speaking of comments, ...
> 
> > +	adc	%r16b,%dl	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r16b,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r18w,%ax	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r18w,0x123(%r16,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r18w,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r25d,%edx	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r25d,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r31,%r15	 #APX_F OPC_EVEX_EVEX
> > +	adc	%r31,0x123(%r31,%rax,4)	 #APX_F OPC_EVEX_EVEX
> > +	adc	0x123(%r16,%rax,4),%r16b	 #APX_F OPC_EVEX_EVEX
> > +	adc	0x123(%r16,%rax,4),%r31	 #APX_F OPC_EVEX_EVEX
> > +	adc	0x123(%r31,%rax,4),%r18w	 #APX_F OPC_EVEX_EVEX
> > +	adc	0x123(%r31,%rax,4),%r25d	 #APX_F OPC_EVEX_EVEX
> > +	adc	0x123(%r31,%rax,4),%r31	 #APX_F OPC_EVEX_EVEX
> 
> ... the entire set of adc here doesn't encode as EVEX, but as REX2 (i.e.
> the comments are outright wrong). As a result the EVEX encodings added to
> the opcode table in the previous patch aren't being tested at all.
> 

Since their decoding is in NDD, and print {evex} is supported in Part II patch 1/6, these instructions were re-tested in part II patch1/6. Maybe we need to add some egpr32 tests for them in that patch. Deleted all REX2 testcases in this patch.

> > --- a/gas/testsuite/gas/i386/x86-64-evex.d
> > +++ b/gas/testsuite/gas/i386/x86-64-evex.d
> > @@ -17,6 +17,6 @@ Disassembly of section .text:
> >   +[a-f0-9]+:	62 f1 d6 38 7b f0    	vcvtusi2ss %rax,\{rd-
> sae\},%xmm5,%xmm6
> >   +[a-f0-9]+:	62 f1 57 38 7b f0    	vcvtusi2sd %eax,\{rd-
> bad\},%xmm5,%xmm6
> >   +[a-f0-9]+:	62 f1 d7 38 7b f0    	vcvtusi2sd %rax,\{rd-
> sae\},%xmm5,%xmm6
> > - +[a-f0-9]+:	62 e1 7e 08 2d c0    	vcvtss2si %xmm0,\(bad\)
> > + +[a-f0-9]+:	62 e1 7e 08 2d c0    	vcvtss2si %xmm0,%r16d
> >   +[a-f0-9]+:	62 e1 7c 08 c2 c0 00 	vcmpeqps %xmm0,%xmm0,\(bad\)
> 
> If the line that's now disassembling okay cannot be replaced by a suitable
> equivalent, it should be dropped rather than be adjusted. Furthermore such
> an adjustment needs to be done right in the patch leading to the changed
> output, or else things end up non-bisectable. (New tests are okay to add in a
> separate patch.)
> 

Ok, added it to patch 2/8.

> > --- a/gas/testsuite/gas/i386/x86-64-inval-movbe.s
> > +++ b/gas/testsuite/gas/i386/x86-64-inval-movbe.s
> > @@ -1,5 +1,6 @@
> >  # Check illegal movbe in 64bit mode.
> >  	.text
> > +	.arch .noapx_f
> >  foo:
> >  	movbe	(%rcx),%bl
> >  	movbe	%ecx,%ebx
> 
> I don't understand the need for this addition (and hence for the need to
> change the test's expecations). Like was mentioned on the original
> AVX10 series, tests like this shall not need modification, or else it indicates
> people's code also may need ".arch .noapx_f" additions, which I'm sure you
> agree may not be required. Finally, if testcase expecations like the above
> would be needed anywhere, please generalize them such that a similar mere
> addition of a line doesn't require the entire test to be touched. Here this
> means that while for the diagnostics you of course want exact line number
> matches, for the actual listing line numbers don't don't need matching
> individually.
> 

Agree with you, but movbe is special, movbe didn't support reg to reg before, but APX enable it. so I added .arch .noapx_f for this invalid test.

Thanks, 
Lili

  reply	other threads:[~2023-10-17 15:54 UTC|newest]

Thread overview: 84+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-09-19 15:25 [PATCH 0/8] [RFC] Support Intel APX EGPR Cui, Lili
2023-09-19 15:25 ` [PATCH 1/8] Support APX GPR32 with rex2 prefix Cui, Lili
2023-09-21 15:27   ` Jan Beulich
2023-09-27 15:57     ` Cui, Lili
2023-09-21 15:51   ` Jan Beulich
2023-09-27 15:59     ` Cui, Lili
2023-09-28  8:02       ` Jan Beulich
2023-10-07  3:27         ` Cui, Lili
2023-09-19 15:25 ` [PATCH 2/8] Support APX GPR32 with extend evex prefix Cui, Lili
2023-09-22 10:12   ` Jan Beulich
2023-10-17 15:48     ` Cui, Lili
2023-10-18  6:40       ` Jan Beulich
2023-10-18 10:44         ` Cui, Lili
2023-10-18 10:50           ` Jan Beulich
2023-09-22 10:50   ` Jan Beulich
2023-10-17 15:50     ` Cui, Lili
2023-10-17 16:11       ` Jan Beulich
2023-10-18  2:02         ` Cui, Lili
2023-10-18  6:10           ` Jan Beulich
2023-09-25  6:03   ` Jan Beulich
2023-10-17 15:52     ` Cui, Lili
2023-10-17 16:12       ` Jan Beulich
2023-10-18  6:31         ` Cui, Lili
2023-10-18  6:47           ` Jan Beulich
2023-10-18  7:52             ` Cui, Lili
2023-10-18  8:21               ` Jan Beulich
2023-10-18 11:30                 ` Cui, Lili
2023-10-19 11:58                   ` Cui, Lili
2023-10-19 15:24                     ` Jan Beulich
2023-10-19 16:38                       ` Cui, Lili
2023-10-20  6:25                         ` Jan Beulich
2023-10-22 14:33                           ` Cui, Lili
2023-09-19 15:25 ` [PATCH 3/8] Add tests for " Cui, Lili
2023-09-27 13:11   ` Jan Beulich
2023-10-17 15:53     ` Cui, Lili [this message]
2023-10-17 16:19       ` FW: " Jan Beulich
2023-10-18  2:32         ` Cui, Lili
2023-10-18  6:05           ` Jan Beulich
2023-10-18  7:16             ` Cui, Lili
2023-10-18  8:05               ` Jan Beulich
2023-10-18 11:26                 ` Cui, Lili
2023-10-18 12:06                   ` Jan Beulich
2023-10-25 16:03                     ` Cui, Lili
2023-09-27 13:19   ` Jan Beulich
2023-09-19 15:25 ` [PATCH 4/8] Support APX NDD Cui, Lili
2023-09-27 14:44   ` Jan Beulich
2023-10-22 14:05     ` Cui, Lili
2023-10-23  7:12       ` Jan Beulich
2023-10-25  8:10         ` Cui, Lili
2023-10-25  8:47           ` Jan Beulich
2023-10-25 15:49             ` Cui, Lili
2023-10-25 15:59               ` Jan Beulich
2023-09-28  7:57   ` Jan Beulich
2023-10-22 14:57     ` Cui, Lili
2023-10-24 11:39     ` Cui, Lili
2023-10-24 11:58       ` Jan Beulich
2023-10-25 15:29         ` Cui, Lili
2023-09-19 15:25 ` [PATCH 5/8] Support APX NDD optimized encoding Cui, Lili
2023-09-28  9:29   ` Jan Beulich
2023-10-23  2:57     ` Hu, Lin1
2023-10-23  7:23       ` Jan Beulich
2023-10-23  7:50         ` Hu, Lin1
2023-10-23  8:15           ` Jan Beulich
2023-10-24  1:40             ` Hu, Lin1
2023-10-24  6:03               ` Jan Beulich
2023-10-24  6:08                 ` Hu, Lin1
2023-10-23  3:07     ` [PATCH-V2] " Hu, Lin1
2023-10-23  3:30     ` [PATCH 5/8] [v2] " Hu, Lin1
2023-10-23  7:26       ` Jan Beulich
2023-09-19 15:25 ` [PATCH 6/8] Support APX Push2/Pop2 Cui, Lili
2023-09-28 11:37   ` Jan Beulich
2023-10-30 15:21     ` Cui, Lili
2023-10-30 15:31       ` Jan Beulich
2023-11-20 13:05         ` Cui, Lili
2023-09-19 15:25 ` [PATCH 7/8] Support APX NF Cui, Lili
2023-09-25  6:07   ` Jan Beulich
2023-09-28 12:42   ` Jan Beulich
2023-11-02 10:15     ` Cui, Lili
2023-11-02 10:23       ` Jan Beulich
2023-11-02 10:46         ` Cui, Lili
2023-12-12  2:59           ` H.J. Lu
2023-09-19 15:25 ` [PATCH 8/8] Support APX JMPABS Cui, Lili
2023-09-28 13:11   ` Jan Beulich
2023-11-02  2:32     ` Hu, Lin1

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=SJ0PR11MB5600D8B7A243DD0721BC92F79ED6A@SJ0PR11MB5600.namprd11.prod.outlook.com \
    --to=lili.cui@intel.com \
    --cc=JBeulich@suse.com \
    --cc=binutils@sourceware.org \
    --cc=hongjiu.lu@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).