From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <dev-bounces@dpdk.org>
Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124])
	by inbox.dpdk.org (Postfix) with ESMTP id D9A95A0547;
	Fri, 10 Sep 2021 14:32:00 +0200 (CEST)
Received: from [217.70.189.124] (localhost [127.0.0.1])
	by mails.dpdk.org (Postfix) with ESMTP id C128741180;
	Fri, 10 Sep 2021 14:30:38 +0200 (CEST)
Received: from mga01.intel.com (mga01.intel.com [192.55.52.88])
 by mails.dpdk.org (Postfix) with ESMTP id 1690640DDE
 for <dev@dpdk.org>; Fri, 10 Sep 2021 14:30:23 +0200 (CEST)
X-IronPort-AV: E=McAfee;i="6200,9189,10102"; a="243386304"
X-IronPort-AV: E=Sophos;i="5.85,282,1624345200"; d="scan'208";a="243386304"
Received: from orsmga001.jf.intel.com ([10.7.209.18])
 by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;
 10 Sep 2021 05:30:18 -0700
X-ExtLoop1: 1
X-IronPort-AV: E=Sophos;i="5.85,282,1624345200"; d="scan'208";a="514279793"
Received: from silpixa00400573.ir.intel.com (HELO
 silpixa00400573.ger.corp.intel.com) ([10.237.223.107])
 by orsmga001.jf.intel.com with ESMTP; 10 Sep 2021 05:30:18 -0700
From: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
To: dev@dpdk.org
Date: Fri, 10 Sep 2021 13:29:54 +0100
Message-Id: <20210910123003.85448-15-cristian.dumitrescu@intel.com>
X-Mailer: git-send-email 2.17.1
In-Reply-To: <20210910123003.85448-1-cristian.dumitrescu@intel.com>
References: <20210910123003.85448-1-cristian.dumitrescu@intel.com>
Subject: [dpdk-dev] [PATCH 15/24] pipeline: create inline functions for
 instruction operands
X-BeenThere: dev@dpdk.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: DPDK patches and discussions <dev.dpdk.org>
List-Unsubscribe: <https://mails.dpdk.org/options/dev>,
 <mailto:dev-request@dpdk.org?subject=unsubscribe>
List-Archive: <http://mails.dpdk.org/archives/dev/>
List-Post: <mailto:dev@dpdk.org>
List-Help: <mailto:dev-request@dpdk.org?subject=help>
List-Subscribe: <https://mails.dpdk.org/listinfo/dev>,
 <mailto:dev-request@dpdk.org?subject=subscribe>
Errors-To: dev-bounces@dpdk.org
Sender: "dev" <dev-bounces@dpdk.org>

Signed-off-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
---
 lib/pipeline/rte_swx_pipeline_internal.h | 29 ++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/lib/pipeline/rte_swx_pipeline_internal.h b/lib/pipeline/rte_swx_pipeline_internal.h
index 791adfb471..efd136196f 100644
--- a/lib/pipeline/rte_swx_pipeline_internal.h
+++ b/lib/pipeline/rte_swx_pipeline_internal.h
@@ -928,6 +928,35 @@ struct thread {
 #define HEADER_VALID(thread, header_id) \
 	MASK64_BIT_GET((thread)->valid_headers, header_id)
 
+static inline uint64_t
+instr_operand_hbo(struct thread *t, const struct instr_operand *x)
+{
+	uint8_t *x_struct = t->structs[x->struct_id];
+	uint64_t *x64_ptr = (uint64_t *)&x_struct[x->offset];
+	uint64_t x64 = *x64_ptr;
+	uint64_t x64_mask = UINT64_MAX >> (64 - x->n_bits);
+
+	return x64 & x64_mask;
+}
+
+#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN
+
+static inline uint64_t
+instr_operand_nbo(struct thread *t, const struct instr_operand *x)
+{
+	uint8_t *x_struct = t->structs[x->struct_id];
+	uint64_t *x64_ptr = (uint64_t *)&x_struct[x->offset];
+	uint64_t x64 = *x64_ptr;
+
+	return ntoh64(x64) >> (64 - x->n_bits);
+}
+
+#else
+
+#define instr_operand_nbo instr_operand_hbo
+
+#endif
+
 #define ALU(thread, ip, operator)  \
 {                                                                              \
 	uint8_t *dst_struct = (thread)->structs[(ip)->alu.dst.struct_id];      \
-- 
2.17.1