DPDK patches and discussions
 help / color / mirror / Atom feed
From: "Varghese, Vipin" <vipin.varghese@intel.com>
To: Stephen Hemminger <stephen@networkplumber.org>
Cc: "Pattan, Reshma" <reshma.pattan@intel.com>,
	"dev@dpdk.org" <dev@dpdk.org>,
	 "thomas@monjalon.net" <thomas@monjalon.net>,
	"Mcnamara, John" <john.mcnamara@intel.com>,
	"Byrne, Stephen1" <stephen1.byrne@intel.com>,
	"Glynn, Michael J" <michael.j.glynn@intel.com>,
	"Patel, Amol" <amol.patel@intel.com>
Subject: Re: [dpdk-dev] [PATCH v4 5/9] app/procinfo: add support for show tm
Date: Mon, 26 Nov 2018 04:15:05 +0000	[thread overview]
Message-ID: <4C9E0AB70F954A408CC4ADDBF0F8FA7D4D2C1FD9@BGSMSX101.gar.corp.intel.com> (raw)
In-Reply-To: <20181123092215.50d299ae@xeon-e3>

Hi Stephen,

snipped

> 
> > > > > > > >
> > > > > > > > >
> > > > > > > > > > +			if ((ret) | (!is_leaf))
> > > > > > > > > > +
> > > > > > > > >
> > > > > > > > > Is the operator here should be || ?
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > > > Check is done for 'if either ret is not 0 or if it ret is
> > > > > > > > 0 but not leaf' we skip leaf details print. If 'ret is 0 and is leaf'
> > > > > > > > we skip continue to print
> > > > > > > leaf details.
> > > > > > >
> > > > > > > IMO, using logical operator over bitwise operator is good
> > > > > > > here in if statement
> > > > > > .
> > > > > > > Like below.?
> > > > > > >
> > > > > > > If (ret || (is_leaf == 0 ))
> > > > > >
> > > > > > Thanks for the information, if the logic is correct do I need
> > > > > > to change for v6
> > > > > >
> > > > >
> > > > > OK in v6, but you can wait to hear more comments from others if
> > > > > any before sending v6 .
> > > >
> > > > Ok thanks Reshma, but can you tell me how the earlier logic fails
> > > > and runs slow compared to logical or?
> > >
> > > Not about faster or slower.
> >
> > Now I see, I was wondering the suggestion was for improvement for
> performance.
> >
> > >
> > > Logical operators are commonly used in decision making in C programming.
> > > Bitwise operators are used in C programming to perform bit-level operations.
> > >
> >
> > Agreed
> >
> > > Since , above if condition is for decision making here logical ||
> > > operator will fit , so I am suggesting to use that.
> > >
> >
> > But bitwise OR is not wrong right?
> >
> > > We  don't need to do any bitwise manipulation in if condition to
> > > make the decision, so bitwise | operator is not needed
> >
> > We can correct this in next patch set not v6 if this is only change for 'show tm'
> 
> It could be that compiler might optimize logical into bitwise operation to avoid
> cost of conditional branch (if there are no side effects).


Checking with 'EXTRA_CFLAGS=-g' we get the code generated as 

"""
                        if ((ret) | (!is_leaf))
   9a512:       8b 85 28 fd ff ff       mov    eax,DWORD PTR [rbp-0x2d8]
   9a518:       85 c0                   test   eax,eax
   9a51a:       0f 94 c0                sete   al
   9a51d:       0f b6 c0                movzx  eax,al
   9a520:       0b 85 3c fd ff ff       or     eax,DWORD PTR [rbp-0x2c4]
   9a526:       85 c0                   test   eax,eax
   9a528:       75 74                   jne    9a59e <show_tm+0x73e>
                                continue;
"""

Looks like the is_leaf is picked assembly 'test' is done then byte is set to 1 based on flags. This is then or with 'ret'. I think your observation is correct 'compiler is remapping to or'

Thanks
Vipin Varghese

  reply	other threads:[~2018-11-26  4:15 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-06 12:49 [dpdk-dev] [PATCH v4 1/9] app/procinfo: add usage for new debug Vipin Varghese
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 2/9] app/procinfo: add compare for new options Vipin Varghese
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 3/9] app/procinfo: add prototype for debug instances Vipin Varghese
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 4/9] app/procinfo: add support for show port Vipin Varghese
2018-11-21 14:24   ` Pattan, Reshma
2018-11-22 14:20     ` Varghese, Vipin
2018-11-21 20:22   ` Stephen Hemminger
2018-11-22 14:21     ` Varghese, Vipin
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 5/9] app/procinfo: add support for show tm Vipin Varghese
2018-11-21 14:28   ` Pattan, Reshma
2018-11-22 13:28     ` Varghese, Vipin
2018-11-23 11:50       ` Pattan, Reshma
2018-11-23 13:29         ` Varghese, Vipin
2018-11-23 13:33           ` Pattan, Reshma
2018-11-23 13:55             ` Varghese, Vipin
2018-11-23 14:57               ` Pattan, Reshma
2018-11-23 15:05                 ` Varghese, Vipin
2018-11-23 17:22                   ` Stephen Hemminger
2018-11-26  4:15                     ` Varghese, Vipin [this message]
2018-11-26  9:28                       ` Ananyev, Konstantin
2018-11-26  9:33                         ` Ananyev, Konstantin
2018-11-26  9:46                           ` Varghese, Vipin
2018-11-26  9:56                             ` Ananyev, Konstantin
2018-11-26 10:13                               ` Varghese, Vipin
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 6/9] app/procinfo: add support for show crypto Vipin Varghese
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 7/9] app/procinfo: add support for debug ring Vipin Varghese
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 8/9] app/procinfo: add support for show mempool Vipin Varghese
2018-11-21 17:23   ` Pattan, Reshma
2018-11-22 14:21     ` Varghese, Vipin
2018-11-06 12:49 ` [dpdk-dev] [PATCH v4 9/9] doc/procinfo: add information for debug options Vipin Varghese
  -- strict thread matches above, loose matches on Subject: below --
2018-11-06  2:34 [dpdk-dev] [PATCH v4 1/9] app/procinfo: add usage for new debug Vipin Varghese
2018-11-06  2:34 ` [dpdk-dev] [PATCH v4 5/9] app/procinfo: add support for show tm Vipin Varghese

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=4C9E0AB70F954A408CC4ADDBF0F8FA7D4D2C1FD9@BGSMSX101.gar.corp.intel.com \
    --to=vipin.varghese@intel.com \
    --cc=amol.patel@intel.com \
    --cc=dev@dpdk.org \
    --cc=john.mcnamara@intel.com \
    --cc=michael.j.glynn@intel.com \
    --cc=reshma.pattan@intel.com \
    --cc=stephen1.byrne@intel.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /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 NNTP newsgroup(s).