<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Jan 24, 2017, at 3:54 AM, Blank, Guy via llvm-dev <<a href="mailto:llvm-dev@lists.llvm.org" class="">llvm-dev@lists.llvm.org</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Hi All,<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">AVX-512 introduced the K mask registers and masked operations which make a natural choice for legalizing vectors of i1’s.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">For example,<br class=""><br class=""><o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">define <8 x i32> @foo(<8 x i32>%a, <8 x i32*> %p) {<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> %r = call <8 x i32> @llvm.masked.gather.v8i32(<8 x i32*> %p, i32 4, <8 x i1> <i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true, i1 true>, <8 x i32> undef)<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> ret 8 x i32>%r<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">}<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Can be lowered to<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""># BB#0:<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">kxnorw %k0, %k0, %k1<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">vpgatherqd (,%zmm1), %ymm0 {%k1}<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">retq<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Legal vectors of i1’s require support for BUILD_VECTOR(i1, i1, .., i1), i1 EXTRACT_VEC_ELEMENT (…) and INSERT_VEC_ELEMENT(i1, …) , so making i1 legal seemed like a sensible decision, and this is the current state in the top of trunk.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif; color: rgb(31, 73, 125);" class=""> <o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">However, making i1 legal affected instruction selection of scalar code as well. Currently, there are cases where operations producing or consuming i1’s are selected (sub-optimally) to instructions that act on K-regs.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><a href="https://llvm.org/bugs/show_bug.cgi?id=28650" style="color: rgb(149, 79, 114); text-decoration: underline;" class="">PR28650</a><span class="Apple-converted-space"> </span>is an example showing that i1’s live-in or live-out of basic-blocks are being selected to K register classes, even though we don’t want this to happen. This problem does not happen on subtargets without the AVX-512 feature enabled.<br class="">The following is the AVX-512 code from the bug report:<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""># BB#0: # %entry<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">testb $1, %dil<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">je .LBB0_1<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""># BB#2: # %if<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">pushq %rax<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">callq bar<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> # kill: %AL<def> %AL<kill> %EAX<def><o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">andl $1, %eax<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">kmovw %eax, %k0<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">addq $8, %rsp<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">jmp .LBB0_3<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">.LBB0_1:<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">kxnorw %k0, %k0, %k0<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">kshiftrw $15, %k0, %k0<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">.LBB0_3: # %else<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">kmovw %k0, %eax<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> # kill: %AL<def> %AL<kill> %EAX<kill><o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Retq<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">The kmov,kxnor,kshiftr instructions here are the instructions operating on K registers. These are undesirable in the purely scalar input code.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Having a type that can be possibly legalized to two different register classes exposes a fundamental limitation of the current instruction selection framework, and that is we cannot always make the right decision about live-in/live-out i1’s because we cannot see beyond the boundary of the current basic-block we are visiting. As a side-note, with GlobalISel this can be solved, since we see the entire use-def chain at the function level.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Our initial thought was to write a pass that will be run after ISel to correct bad selections. The pass would examine the use-def chains containing values that were selected to K-regsiter classes, and, when profitable, re-assign the values to GPR register classes (and replace the producing/consuming instructions accordingly). But even with this fix-up pass, we would still be losing many ISel pattern-matching rules that will be missed because the instruction set acting on GPR is richer than the instruction set acting on K-regs. For example, a test trying to match the sbb instruction:<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">define i32 @test2(i32 %x, i32 %y, i32 %res) nounwind uwtable readnone ssp {<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">entry:<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> %cmp = icmp ugt i32 %x, %y<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> %dec = sext i1 %cmp to i32<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> %dec.res = add nsw i32 %dec, %res<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> ret i32 %dec.res<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">}<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Generates the following with AVX2:<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""># BB#0: # %entry<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">cmpl %edi, %esi<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">sbbl $0, %edx<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">movl %edx, %eax<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">retq<o:p class=""></o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">While AVX512 produces:<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""># BB#0: # %entry<o:p class=""></o:p></span></div><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">xorl %ecx, %ecx<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">cmpl %esi, %edi<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">movl $-1, %eax<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">cmovbel %ecx, %eax<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">addl %edx, %eax<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">retq<o:p class=""></o:p></span></p><p style="margin-right: 0in; margin-left: 27pt; font-size: 12pt; font-family: 'Times New Roman', serif; margin-bottom: 0.0001pt;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></p><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">So we would still end-up with cases where when the AVX-512 feature is enabled, instruction selection for scalar code becomes inferior.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Finally, we suggest to undo the above issues cause by legalizing i1, by making i1 illegal. This would make instruction selection of scalar code identical for both cases when the AVX-512 feature is on and off. As for supporting BUILD_VECTOR, EXTRACT_VEC_ELEMENT and INSERT_VEC_ELEMENT, we believe we can support these operations even when i1 is illegal and the vectors of i1 *<b class="">are</b>* legal by using the i8 type instead of i1, as it should be implicitly truncated/extended to the element type of the vNi1 vectors.<span class="Apple-converted-space"> </span><br class=""></span></div></div></div></blockquote><div><br class=""></div><div><br class=""></div><div>FWIW this makes sense to me: using vector of i8 to represent the boolean values and making sure to select the right pattern to use the K register seems reasonable.</div><div>How are you planning to implement the selection?</div><div><br class=""></div><div>Thanks,</div><div><br class=""></div><div>— </div><div>Mehdi</div><div><br class=""></div><br class=""><blockquote type="cite" class=""><div class=""><div class="WordSection1" style="page: WordSection1; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;"><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">I am now working on a patch that will implement this approach.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""> <o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Would appreciate to get feedback and comments.<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Thanks,<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class="">Guy<o:p class=""></o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif;" class=""><span style="font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></span></div><div style="margin: 0in 0in 0.0001pt; font-size: 11pt; font-family: Calibri, sans-serif;" class=""><o:p class=""> </o:p></div></div><p style="margin-right: 0in; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', serif; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">---------------------------------------------------------------------<br class="">Intel Israel (74) Limited</p><p style="margin-right: 0in; margin-left: 0in; font-size: 12pt; font-family: 'Times New Roman', serif; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class="">This e-mail and any attachments may contain confidential material for<br class="">the sole use of the intended recipient(s). Any review or distribution<br class="">by others is strictly prohibited. If you are not the intended<br class="">recipient, please contact the sender and delete all copies.</p><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">_______________________________________________</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><span style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; float: none; display: inline !important;" class="">LLVM Developers mailing list</span><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="mailto:llvm-dev@lists.llvm.org" style="color: rgb(149, 79, 114); text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">llvm-dev@lists.llvm.org</a><br style="font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px;" class=""><a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" style="color: rgb(149, 79, 114); text-decoration: underline; font-family: Helvetica; font-size: 12px; font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px;" class="">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a></div></blockquote></div><br class=""></body></html>