get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/11412/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 11412,
    "url": "http://patches.dpdk.org/api/patches/11412/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1457622466-18848-2-git-send-email-Maciej.Czekaj@caviumnetworks.com/",
    "project": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<1457622466-18848-2-git-send-email-Maciej.Czekaj@caviumnetworks.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1457622466-18848-2-git-send-email-Maciej.Czekaj@caviumnetworks.com",
    "date": "2016-03-10T15:07:46",
    "name": "[dpdk-dev] l3fwd: Fix compilation & enable exact match mode on ARM.",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "ddabe9f9dfa66c41c9131287adb2a83564c4b453",
    "submitter": {
        "id": 442,
        "url": "http://patches.dpdk.org/api/people/442/?format=api",
        "name": "Maciej Czekaj",
        "email": "Maciej.Czekaj@caviumnetworks.com"
    },
    "delegate": {
        "id": 1,
        "url": "http://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1457622466-18848-2-git-send-email-Maciej.Czekaj@caviumnetworks.com/mbox/",
    "series": [],
    "comments": "http://patches.dpdk.org/api/patches/11412/comments/",
    "check": "pending",
    "checks": "http://patches.dpdk.org/api/patches/11412/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [IPv6:::1])\n\tby dpdk.org (Postfix) with ESMTP id A67AB376D;\n\tThu, 10 Mar 2016 16:08:09 +0100 (CET)",
            "from na01-bl2-obe.outbound.protection.outlook.com\n\t(mail-bl2on0058.outbound.protection.outlook.com [65.55.169.58])\n\tby dpdk.org (Postfix) with ESMTP id 74F0E2BBC\n\tfor <dev@dpdk.org>; Thu, 10 Mar 2016 16:08:07 +0100 (CET)",
            "from hp-mjc.semihalf.local (80.82.22.190) by\n\tDM2PR0701MB1035.namprd07.prod.outlook.com (10.160.25.143) with\n\tMicrosoft SMTP\n\tServer (TLS) id 15.1.415.20; Thu, 10 Mar 2016 15:08:04 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-caviumnetworks-com;\n\th=From:To:Date:Subject:Message-ID:Content-Type:MIME-Version;\n\tbh=feKEQh9RpCwSSp2KmH5ijldMFGHUc0PXEetJyzeqm00=;\n\tb=V/T0ijogkW6mEc8nl/znARAYqpMdSVEKCZJQFDdV7RjmHE9CZuAtLOYnEC7rb/YEPdsxUp32MJWSQ1CUDrWq7tDcWXDkGKEvarVtKC8+uWqpizQ9ZQdBuONgpSyu7TN4d93+viA2KLMcAhRgsdcwlGVFoRONEg+bPIUWIZzsM4w=",
        "Authentication-Results": "intel.com; dkim=none (message not signed)\n\theader.d=none;intel.com; dmarc=none action=none\n\theader.from=caviumnetworks.com;",
        "From": "<Maciej.Czekaj@caviumnetworks.com>",
        "To": "<bruce.richardson@intel.com>, <pablo.de.lara.guarch@intel.com>",
        "Date": "Thu, 10 Mar 2016 16:07:46 +0100",
        "Message-ID": "<1457622466-18848-2-git-send-email-Maciej.Czekaj@caviumnetworks.com>",
        "X-Mailer": "git-send-email 1.9.1",
        "In-Reply-To": "<1457622466-18848-1-git-send-email-Maciej.Czekaj@caviumnetworks.com>",
        "References": "<1457622466-18848-1-git-send-email-Maciej.Czekaj@caviumnetworks.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[80.82.22.190]",
        "X-ClientProxiedBy": "AM3PR05CA042.eurprd05.prod.outlook.com (10.141.192.52) To\n\tDM2PR0701MB1035.namprd07.prod.outlook.com (25.160.25.143)",
        "X-Microsoft-Exchange-Diagnostics": [
            "1; DM2PR0701MB1035;\n\t2:yAN+EIq5m9g9Cnz/gBfIVozS0/RnD2JVimmZgJunlW3mHMifxVwXoGfFCG4oDpyhY3Gy482X/UuRSBKNRpo4xYMKKYvNcZK9Hj9NuEwQtdOYPGncO30ROmZEqPWkADUVNjPi3iQzM0qeJwjpEUTBRw==;\n\t3:E5Vu0x6Em36aKzuuILZAKRNYbHkKBnKWXKZde47RjrxQb5Ck+gaqJORCxD/dK+bC09e1+qTbqCu8WhooFTbjKKMzWY8BSPP9lGYX2PaVlVXMdFickPo9L0Kny9hiW5Xm;\n\t25:eeG5EzMVooOMi1YXt5a9iodWoaNcBY2NE81KVi0Bm1HXceqFJhwzdNCbesaj3XU3ySVGc/AQQxwPwfwkcTKQuGoJxQZBoalTnPpwGpWqghaJNwp3UKO0DnxviuySKOumDCN9QCTHmxfa4ZWicQx6zGdyTe1d4+PtRStC26C8GCBDFZDednCc+Wwel1/ZcUr59De6b0D0BWyzdxnS5rZIzQaLW06gU+VUWk28ivCEpto2kfIrBjsbtNHFwoSLHz35m0plWiXn7vVReo7Wns8BnjjVtrpWAwCnY8s6FPxdLpMuoTCbZ+cHK6lg3w1buxFmiMhXe3dc3cHY2BaXc2e6bw==",
            "1; DM2PR0701MB1035;\n\t20:+eHMZaIA/PhKcg2pL4RUd0peXotvcjDNIq6nJAnq7lfm7dZNo+id2C9RZwVEuJhRZ9gDMbVmNlAAe0J90377JzJ3WipUAmVILF5UWZD5KIj4eAeL12WE18U3YptEVvcFLTJiqdQpEBRoGckLxM97b4ddy9T5b9eQ68rEeGR8HNMF/ySXQ6t4lqbbWF07Nbh1ZlEuQHHPxHph9qp9xWun6GNt3E0QiwrptWLpyO16ksPR75NRmO0B60cU988Ghm2K53+WJIIhw/AgdH4xn1sSeM6/Z/8UgVR78a23TCOWZ5qiuZav89uivWXJIGZ2lmQyE6T7MGkY8b69DFVOcgrE1v1kcuSUvoxCoJBxTDdYiCrAHNhud5CQBHvXigWukXN5sO2OIfYUNM2kp5c94HDDbGH88Rr6XBNnHSkCrMZXCusPXNUjVmXJoDBCjW+89PsJwOkgJ/qt1MBypeaI/EsQFeoGqbKttSWCzSRX1yt65I6Fna+tvHRARaRBpV9N6j6Gd1ySTgT3Nme8HItnD/MKEFyVlgOaL0nfWwMnz5Pgw0WwSSJH2WgKrtp7TBpk2Ys0sfDioTBnz2mh9aJzmAJRLD6orHVCGS/iXzjWVEbEoU8=",
            "1; DM2PR0701MB1035;\n\t4:xwHum3wS8iaqX41naOgjJpf5vdM5d9Sgl1xSHyVmh3sXHuHmxfNo5GmRQxONdHINxC7ImOiB4BE4jyqW9nWxcpQ3Dh6v7FqREtT3gqpxNrC47IV1neCYoI6abEL1yM/64JXEcdvTMEi4ZoUJkL80kroxQwyzQSSqLpMlDX6K9pr+pp5p0234+1ZdF8AY2Mx/UF2r5zmh2RyhnGMYvzLAoDzCatKNhQR9cQDTvMpGzd7AX75ugtK2p8IEvazOlbrPEvenH1dxTj1s8oCNpURXXGhXrirr02aG3EnCmmL3N2Dpy8IL10E0q97g9kpad+22CJ8Cqa+mwzc56Br9mngNLNjvjz7KsnG8Ikb1MDn6IOBXVyDndrT0wHxuca9u+13g",
            "=?us-ascii?Q?1; DM2PR0701MB1035;\n\t23:lSp/XzeZekZA3i6EjBFVYYE/FKUaEfhes09xmzD?=\n\t=?us-ascii?Q?goMVQ2h624UwArxuFQzvlumAa/mJ4WRRSIGnAVWYhRGee1C56Qy5avi41xYc?=\n\t=?us-ascii?Q?EXMi6cccA4mRqx9EAfrHtcER2py7/JON1/2Gb9wMEq/8oQm80zCI8rg30vwh?=\n\t=?us-ascii?Q?u6U8uqIl8ByUWlxK4WNk7yQkwHzo0qtIT0pHlaj2svI3ws/hnyGWKAUiINJE?=\n\t=?us-ascii?Q?fZf+ZmK17wFWtPdia8QpPzzyL7wYSR9InbTdq10CU8fm1zNkLfIJgVeKPAS4?=\n\t=?us-ascii?Q?PzcREhraU1iO67bB9xuT/j43At0UKDA17CgV0gvSzN8zwBHI7q5QARgP2+OI?=\n\t=?us-ascii?Q?eCu3DHTkisosYSUZt0XcCr4ot+c2mJJ+wyU6HqckfyTHMwNL5g3BXDcRRdBR?=\n\t=?us-ascii?Q?nq54VlM/5bZIs1hskyCqhT4SrLFQMXBaFEPw10hpvguBS2it2RPKmpwxoFL4?=\n\t=?us-ascii?Q?fNksT3VPAEdlGbocxgzBb8S8pzvKYwJ7QmxoOLnQEPYwoHl6BJqchvQPe65s?=\n\t=?us-ascii?Q?M1YbN0j9OCXe3/cKK8FKvzvu3gEXKoDI/wAQdhUapmFRUuRuANu4CqpQqfad?=\n\t=?us-ascii?Q?iV1MkJq8BfDPd4sIhRdlSwb19OaRxJfVBadi3lSmViacdM9Ud/f7mLR4KTmJ?=\n\t=?us-ascii?Q?r7XLARCA7xQMFBpaE5m3NkBb5M+2zyp6pQrOXBN+K4A/uLKi1a5AtBTtHuNo?=\n\t=?us-ascii?Q?fATb7IuKe843naylJ7rWbcQa0F3KniHcyLzVdVZoMbRMuoa1TXqtPWDmFcUp?=\n\t=?us-ascii?Q?nfsi1mYIhJ9jchP676m5LMKIZTsz91mvLoyQ3LlHto04mlXb0uu/QuRtD0i3?=\n\t=?us-ascii?Q?XvPL72k5xC15/6Ir0EqhnWUfIYFvnVMv2ZuXvk8aopRIIHhFAVq5b/pvQOhf?=\n\t=?us-ascii?Q?T8oJfMSuXWwxUKEW2oW/aoEcItC80nshx4E3yBuRAPA+v4u/RKd5Fa1iMM6N?=\n\t=?us-ascii?Q?F3f4D4eKivHiyyDNzPy1WRsPIUJj0VXRqkUWdE0GxGhKGJFGE3PcE+AkyMCq?=\n\t=?us-ascii?Q?e0WM=3D?=",
            "1; DM2PR0701MB1035;\n\t5:mcOEjdjwwaPMWZWFsKOLRU4YsTuqR33AoF5DbiARzXITUmE8On4Mr795Dn4pPvQV/+JMmPqFARd4j+p8GqT/TSJD8O3guEqsv0l2YRpXi8VI+Ww74Me9NY2n16BOzUA5Uc/hZihcAIlO3GOIkKDsZA==;\n\t24:v84IVjR/UifEmjRIQvKuZ2Bqg43xIdkQ+1maSC8qUpxRcwhRGWb+I5espmidP3rv/i+f/+Shgs3JTjPPvG4YFQP1nKmRHHMfbHNTj0Xah7w="
        ],
        "X-Microsoft-Antispam": "UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DM2PR0701MB1035;",
        "X-MS-Office365-Filtering-Correlation-Id": "89ff3bed-c748-43e8-2be2-08d348f5c8a1",
        "X-Microsoft-Antispam-PRVS": "<DM2PR0701MB1035DB4751186384C95CED6D86B40@DM2PR0701MB1035.namprd07.prod.outlook.com>",
        "X-Exchange-Antispam-Report-Test": "UriScan:;",
        "X-Exchange-Antispam-Report-CFA-Test": "BCL:0; PCL:0;\n\tRULEID:(601004)(2401047)(5005006)(8121501046)(3002001)(10201501046); \n\tSRVR:DM2PR0701MB1035; BCL:0; PCL:0; RULEID:; SRVR:DM2PR0701MB1035; ",
        "X-Forefront-PRVS": "08770259B4",
        "X-Forefront-Antispam-Report": "SFV:NSPM;\n\tSFS:(10009020)(4630300001)(6009001)(36756003)(5003940100001)(19580395003)(5004730100002)(3846002)(50226001)(107886002)(2876002)(6116002)(189998001)(229853001)(50986999)(66066001)(2906002)(76176999)(86152002)(86362001)(19580405001)(77096005)(5008740100001)(1096002)(4326007)(92566002)(4001430100002)(42186005)(47776003)(50466002)(48376002)(5001770100001)(81166005)(2950100001)(586003)(7099028)(32563001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DM2PR0701MB1035;\n\tH:hp-mjc.semihalf.local; FPR:; \n\tSPF:None; MLV:sfv; LANG:en; ",
        "SpamDiagnosticOutput": "1:23",
        "SpamDiagnosticMetadata": "NSPM",
        "X-OriginatorOrg": "caviumnetworks.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "10 Mar 2016 15:08:04.9721\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "Hosted",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DM2PR0701MB1035",
        "Cc": "dev@dpdk.org",
        "Subject": "[dpdk-dev] [PATCH] l3fwd: Fix compilation & enable exact match mode\n\ton ARM.",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "patches and discussions about DPDK <dev.dpdk.org>",
        "List-Unsubscribe": "<http://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<http://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "From: Maciej Czekaj <Maciej.Czekaj@caviumnetworks.com>\n\nEnable NEON support in exact match mode.\nl3fwd example did not compile on ARM due to SSE2 instrincics used\nin generic part.\nSome instrinsins were used to initialize data structures and those were\nreplaced by ordinary structure initalization.\nAll SSE2 intrinsics used in forwarding, i.e. masking the IP/TCP header\nare moved to single inline function and made arch-specific.\n\nSigned-off-by: Maciej Czekaj <Maciej.Czekaj@caviumnetworks.com>\n---\n examples/l3fwd/l3fwd.h    |  4 ++-\n examples/l3fwd/l3fwd_em.c | 72 +++++++++++++++++++++++++++++------------------\n examples/l3fwd/main.c     |  2 +-\n 3 files changed, 48 insertions(+), 30 deletions(-)",
    "diff": "diff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h\nindex da6d369..7dcc7e5 100644\n--- a/examples/l3fwd/l3fwd.h\n+++ b/examples/l3fwd/l3fwd.h\n@@ -34,6 +34,8 @@\n #ifndef __L3_FWD_H__\n #define __L3_FWD_H__\n \n+#include <rte_vect.h>\n+\n #define DO_RFC_1812_CHECKS\n \n #define RTE_LOGTYPE_L3FWD RTE_LOGTYPE_USER1\n@@ -103,7 +105,7 @@ extern uint32_t enabled_port_mask;\n extern int ipv6; /**< ipv6 is false by default. */\n extern uint32_t hash_entry_number;\n \n-extern __m128i val_eth[RTE_MAX_ETHPORTS];\n+extern xmm_t val_eth[RTE_MAX_ETHPORTS];\n \n extern struct lcore_conf lcore_conf[RTE_MAX_LCORE];\n \ndiff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c\nindex f6a65d8..0adf8f4 100644\n--- a/examples/l3fwd/l3fwd_em.c\n+++ b/examples/l3fwd/l3fwd_em.c\n@@ -85,7 +85,7 @@ union ipv4_5tuple_host {\n \t\tuint16_t port_src;\n \t\tuint16_t port_dst;\n \t};\n-\t__m128i xmm;\n+\txmm_t xmm;\n };\n \n #define XMM_NUM_IN_IPV6_5TUPLE 3\n@@ -109,9 +109,11 @@ union ipv6_5tuple_host {\n \t\tuint16_t port_dst;\n \t\tuint64_t reserve;\n \t};\n-\t__m128i xmm[XMM_NUM_IN_IPV6_5TUPLE];\n+\txmm_t xmm[XMM_NUM_IN_IPV6_5TUPLE];\n };\n \n+\n+\n struct ipv4_l3fwd_em_route {\n \tstruct ipv4_5tuple key;\n \tuint8_t if_out;\n@@ -236,9 +238,27 @@ ipv6_hash_crc(const void *data, __rte_unused uint32_t data_len,\n static uint8_t ipv4_l3fwd_out_if[L3FWD_HASH_ENTRIES] __rte_cache_aligned;\n static uint8_t ipv6_l3fwd_out_if[L3FWD_HASH_ENTRIES] __rte_cache_aligned;\n \n-static __m128i mask0;\n-static __m128i mask1;\n-static __m128i mask2;\n+static rte_xmm_t mask0;\n+static rte_xmm_t mask1;\n+static rte_xmm_t mask2;\n+\n+#if defined(__SSE2__)\n+static inline xmm_t\n+em_mask_key(void *key, xmm_t mask)\n+{\n+\t__m128i data = _mm_loadu_si128((__m128i *)(key));\n+\n+\treturn _mm_and_si128(data, mask);\n+}\n+#elif defined(__ARM_NEON)\n+static inline xmm_t\n+em_mask_key(void *key, xmm_t mask)\n+{\n+\tint32x4_t data = vld1q_s32((int32_t *)key);\n+\n+\treturn vandq_s32(data, mask);\n+}\n+#endif\n \n static inline uint8_t\n em_get_ipv4_dst_port(void *ipv4_hdr, uint8_t portid, void *lookup_struct)\n@@ -249,13 +269,12 @@ em_get_ipv4_dst_port(void *ipv4_hdr, uint8_t portid, void *lookup_struct)\n \t\t(struct rte_hash *)lookup_struct;\n \n \tipv4_hdr = (uint8_t *)ipv4_hdr + offsetof(struct ipv4_hdr, time_to_live);\n-\t__m128i data = _mm_loadu_si128((__m128i *)(ipv4_hdr));\n \n \t/*\n \t * Get 5 tuple: dst port, src port, dst IP address,\n \t * src IP address and protocol.\n \t */\n-\tkey.xmm = _mm_and_si128(data, mask0);\n+\tkey.xmm = em_mask_key(ipv4_hdr, mask0.x);\n \n \t/* Find destination port */\n \tret = rte_hash_lookup(ipv4_l3fwd_lookup_struct, (const void *)&key);\n@@ -271,35 +290,31 @@ em_get_ipv6_dst_port(void *ipv6_hdr,  uint8_t portid, void *lookup_struct)\n \t\t(struct rte_hash *)lookup_struct;\n \n \tipv6_hdr = (uint8_t *)ipv6_hdr + offsetof(struct ipv6_hdr, payload_len);\n-\t__m128i data0 =\n-\t\t_mm_loadu_si128((__m128i *)(ipv6_hdr));\n-\t__m128i data1 =\n-\t\t_mm_loadu_si128((__m128i *)(((uint8_t *)ipv6_hdr)+\n-\t\t\t\t\tsizeof(__m128i)));\n-\t__m128i data2 =\n-\t\t_mm_loadu_si128((__m128i *)(((uint8_t *)ipv6_hdr)+\n-\t\t\t\t\tsizeof(__m128i)+sizeof(__m128i)));\n+\tvoid *data0 = ipv6_hdr;\n+\tvoid *data1 = ((uint8_t *)ipv6_hdr) + sizeof(xmm_t);\n+\tvoid *data2 = ((uint8_t *)ipv6_hdr) + sizeof(xmm_t) + sizeof(xmm_t);\n \n \t/* Get part of 5 tuple: src IP address lower 96 bits and protocol */\n-\tkey.xmm[0] = _mm_and_si128(data0, mask1);\n+\tkey.xmm[0] = em_mask_key(data0, mask1.x);\n \n \t/*\n \t * Get part of 5 tuple: dst IP address lower 96 bits\n \t * and src IP address higher 32 bits.\n \t */\n-\tkey.xmm[1] = data1;\n+\tkey.xmm[1] = *(xmm_t *)data1;\n \n \t/*\n \t * Get part of 5 tuple: dst port and src port\n \t * and dst IP address higher 32 bits.\n \t */\n-\tkey.xmm[2] = _mm_and_si128(data2, mask2);\n+\tkey.xmm[2] = em_mask_key(data2, mask2.x);\n \n \t/* Find destination port */\n \tret = rte_hash_lookup(ipv6_l3fwd_lookup_struct, (const void *)&key);\n \treturn (uint8_t)((ret < 0) ? portid : ipv6_l3fwd_out_if[ret]);\n }\n \n+\n /*\n  * Include header file if SSE4_1 is enabled for\n  * buffer optimization i.e. ENABLE_MULTI_BUFFER_OPTIMIZE=1.\n@@ -348,14 +363,15 @@ convert_ipv6_5tuple(struct ipv6_5tuple *key1,\n #define BYTE_VALUE_MAX 256\n #define ALL_32_BITS 0xffffffff\n #define BIT_8_TO_15 0x0000ff00\n+\n static inline void\n populate_ipv4_few_flow_into_table(const struct rte_hash *h)\n {\n \tuint32_t i;\n \tint32_t ret;\n \n-\tmask0 = _mm_set_epi32(ALL_32_BITS, ALL_32_BITS,\n-\t\t\t\tALL_32_BITS, BIT_8_TO_15);\n+\tmask0 = (rte_xmm_t){.u32 = {BIT_8_TO_15, ALL_32_BITS,\n+\t\t\t\tALL_32_BITS, ALL_32_BITS} };\n \n \tfor (i = 0; i < IPV4_L3FWD_EM_NUM_ROUTES; i++) {\n \t\tstruct ipv4_l3fwd_em_route  entry;\n@@ -381,10 +397,10 @@ populate_ipv6_few_flow_into_table(const struct rte_hash *h)\n \tuint32_t i;\n \tint32_t ret;\n \n-\tmask1 = _mm_set_epi32(ALL_32_BITS, ALL_32_BITS,\n-\t\t\t\tALL_32_BITS, BIT_16_TO_23);\n+\tmask1 = (rte_xmm_t){.u32 = {BIT_16_TO_23, ALL_32_BITS,\n+\t\t\t\tALL_32_BITS, ALL_32_BITS} };\n \n-\tmask2 = _mm_set_epi32(0, 0, ALL_32_BITS, ALL_32_BITS);\n+\tmask2 = (rte_xmm_t){.u32 = {ALL_32_BITS, ALL_32_BITS, 0, 0} };\n \n \tfor (i = 0; i < IPV6_L3FWD_EM_NUM_ROUTES; i++) {\n \t\tstruct ipv6_l3fwd_em_route entry;\n@@ -410,8 +426,8 @@ populate_ipv4_many_flow_into_table(const struct rte_hash *h,\n {\n \tunsigned i;\n \n-\tmask0 = _mm_set_epi32(ALL_32_BITS, ALL_32_BITS,\n-\t\t\t\tALL_32_BITS, BIT_8_TO_15);\n+\tmask0 = (rte_xmm_t){.u32 = {BIT_8_TO_15, ALL_32_BITS,\n+\t\t\t\tALL_32_BITS, ALL_32_BITS} };\n \n \tfor (i = 0; i < nr_flow; i++) {\n \t\tstruct ipv4_l3fwd_em_route entry;\n@@ -462,9 +478,9 @@ populate_ipv6_many_flow_into_table(const struct rte_hash *h,\n {\n \tunsigned i;\n \n-\tmask1 = _mm_set_epi32(ALL_32_BITS, ALL_32_BITS,\n-\t\t\t\tALL_32_BITS, BIT_16_TO_23);\n-\tmask2 = _mm_set_epi32(0, 0, ALL_32_BITS, ALL_32_BITS);\n+\tmask1 = (rte_xmm_t){.u32 = {BIT_16_TO_23, ALL_32_BITS,\n+\t\t\t\tALL_32_BITS, ALL_32_BITS} };\n+\tmask2 = (rte_xmm_t){.u32 = {ALL_32_BITS, ALL_32_BITS, 0, 0} };\n \n \tfor (i = 0; i < nr_flow; i++) {\n \t\tstruct ipv6_l3fwd_em_route entry;\ndiff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c\nindex 0e33039..8520f71 100644\n--- a/examples/l3fwd/main.c\n+++ b/examples/l3fwd/main.c\n@@ -112,7 +112,7 @@ volatile bool force_quit;\n uint64_t dest_eth_addr[RTE_MAX_ETHPORTS];\n struct ether_addr ports_eth_addr[RTE_MAX_ETHPORTS];\n \n-__m128i val_eth[RTE_MAX_ETHPORTS];\n+xmm_t val_eth[RTE_MAX_ETHPORTS];\n \n /* mask of enabled ports */\n uint32_t enabled_port_mask;\n",
    "prefixes": [
        "dpdk-dev"
    ]
}