VPP代码阅读中文注解--crc32.h

2023-10-27

static_always_inline u32
clib_crc32c (u8 * s, int len)
{
  u32 v = 0;

#if __x86_64__
  for (; len >= 8; len -= 8, s += 8)
    v = _mm_crc32_u64 (v, *((u64 *) s));
#else
  /* workaround weird GCC bug when using _mm_crc32_u32
     which happens with -O2 optimization */
#if !defined (__i686__)
  volatile ("":::"memory");
#endif
#endif

  for (; len >= 4; len -= 4, s += 4)
    v = _mm_crc32_u32 (v, *((u32 *) s));

  for (; len >= 2; len -= 2, s += 2)
    v = _mm_crc32_u16 (v, *((u16 *) s));

  for (; len >= 1; len -= 1, s += 1)
    v = _mm_crc32_u8 (v, *((u16 *) s));

  return v;
}

在64位CPU上,先8字节一组进行计算。

然后4字节一组进行计算,最后2字节一组,1字节一组进行计算。

 

#define crc32_u64 __crc32cd
#define crc32_u32 __crc32cw

static_always_inline u32
clib_crc32c (u8 * s, int len)
{
  u32 v = 0;

  for (; len >= 8; len -= 8, s += 8)
    v = __crc32cd (v, *((u64 *) s));

  for (; len >= 4; len -= 4, s += 4)
    v = __crc32cw (v, *((u32 *) s));

  for (; len >= 2; len -= 2, s += 2)
    v = __crc32ch (v, *((u16 *) s));

  for (; len >= 1; len -= 1, s += 1)
    v = __crc32cb (v, *((u8 *) s));

  return v;
}

ARM  cpu 与 X86 CPU类似。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VPP代码阅读中文注解--crc32.h 的相关文章

  • [Python] 过程型程序设计进阶(三):Python函数装饰器

    概念 修饰器也是一个函数 接受一个函数或方法作为其唯一的参数 并返回一个修饰后的函数或方法 作用 对函数或方法进行一次修饰和包裹 之前学习过 property修饰器 接下来学习如何自定义一个修饰器 自定义函数修饰器 自定义一个装饰器 一般是
  • Jmeter集合点技术(同步定时器)

    一 集合点简介 我们怎么实现真正的并发 并发 指的是系统中正在操作业务的用户 在Jmeter中 成为线程数 Jmeter中的各线程 用户 在进行业务操作中的顺序存储存在一定的随机性 集合点的目的 让各个线程 用户 步调一致 对系统进行加压
  • MySQL8.0连接问题总结

    MySQL8 0连接问题总结 1 驱动包版本 2 驱动类 3 连接属性 1 驱动包版本 对于8 0版本的MySQL数据库 驱动包版本也要跟上 一般使用mysql connector java 8 0 11 否则会报如下错误 Caused b
  • vue代码片段

    Place your snippets for vue here Each snippet is defined under a snippet name and has a prefix body and description The
  • new Object() 和Object.create(null)

    new Object 和Object create null const obj1 a 10 b 20 const obj2 a 10 b 20 obj1 obj2 gt gt gt false 引用类型 因为内存地址不同 const ob
  • Spring之ApplicationContext快速入门

    目录 一 概述 二 代码演示 三 BeanFactory与ApplicationContext的关系 四 BeanFactory的继承体系 五 ApplicationContext的继承体系 一 概述 ApplicationContext称
  • mfc 程序闪退_VC6 在Window10 上操作打开文件时闪退或直接退出的解决方法

    1 下载FileTool exe 并解压 2 打开VC6 0 点击File Open Workspace 选择刚解压出来的FileTool dsw 并确定 3 点击Bulid Build FileTool dll 生成FileTool dl
  • 编程求1平方+2平方+...+n平方

    题目描述 编程求1平方 2平方 n平方 输入 输入一行 只有一个整数n 1 lt n lt 200 输出 输出只有一行 这意味着末尾有一个回车符号 包括1个整数 样例 输入 5 输出 55 提示 循环语句 include
  • 浅谈Visitor访问者模式

    一 前言 什么叫访问 如果大家学过数据结构 对于这点就很清晰了 遍历就是访问的一般形式 单独读取一个元素进行相应的处理也叫作访问 读取到想要查看的内容 对其进行处理就叫作访问 那么我们平常是怎么访问的呢 基本上就是直接拿着需要访问的地址来读
  • [USACO Open08]农场周围的道路

    题目描述 约翰的 N 1 N 10 9 只奶牛要出发去探索牧场四周的土地 她们将沿着一条路走 一直走到三岔路口 可以认为所有的路口都是这样的 这时候 这一群奶牛可能会分成两群 分别沿着接下来的两条路继续走 如果她们再次走到三岔路口 那么仍有
  • linux ./ 执行run文件,如何在Ubuntu中执行.bin和.run文件

    在解释如何在Ubuntu上执行 bin和 run文件之前 让我们首先定义这些文件扩展名到底是什么 Bin档 Ubuntu中的Binary或BIN文件指的是安装软件包 其中大多数是self extracting可执行文件 用于在系统上安装软件
  • BF算法 KMP算法

    BF算法 又叫朴素算法 时间复杂度为O mn 相比KMP算法比较简单 举个例子 对于给定的主字符串 ababbcabcdabcde 和子串 abcd 我们用i和j来分别遍历两个字符串 比较两个i j 对应字符串位置的元素是否相等 如果相等则
  • 应用软件的层次划分

    谈到应用程序的层次 我们平时所说的层次有两种 逻辑的层次 layer 和部署的层次 tier 这两种层次划分的目的是不同的 因此划分方式也有一些差异 能够为应用程序带来的好处也是不同的 逻辑层次逻辑层次 layer 划分的最重要的目的在于调
  • JavaScript设计模式(五)——发布订阅模式、桥接模式、组合模式

    个人简介 个人主页 前端杂货铺 学习方向 主攻前端方向 正逐渐往全干发展 个人状态 研发工程师 现效力于中国工业软件事业 人生格言 积跬步至千里 积小流成江海 推荐学习 前端面试宝典 Vue2 Vue3 Vue2 3项目实战 Node js

随机推荐

  • java父类_java 子类与父类

    子类是由继承得到的类 被继承的类就是父类 子类与父类是 is a 关系 一 子类与父类 1 子类 1 子类定义 class 子类名 extends 父类名 2 子类继承性 子类继承了父类的所有属性和除了构造方法的其余方法 子类与父类在同个包
  • Python实现保留三位有效数字

    网上查找了较多的四舍五入的方法 发现不是自己想要的 于是自己按数目级别写了一段 后面又做了更改 做了简单的整合 整体思路就是取第三位数作判断 如果是第三位是5 再判断第四位的奇偶性 作为小白 代码整体逻辑比较呆板 希望有大神做下修改 定义保
  • ssm框架ajax登录页面,ssm框架登录注册demo

    实例简介 ssm框架登录注册demo html页面 ajax实现登录注册 实例截图 核心代码 ssm ssm pom xml src main java controller TestController java UserControll
  • 海思(MPP)媒体处理软件平台(1)-----功能简介

    概述 HI3531D 海思提供的媒体处理软件平台 Media Process Platform 简称 MPP 可支持应用软件快速 开发 该平台对应用软件屏蔽了芯片相关的复杂的底层处理 并对应用软件直接提供 MPI MPP Programe
  • React渲染顺序及useEffect执行顺序探究(含并发模式)

    前言 在不借助任何演示的情况下 你能清楚地说出 React 组件的渲染顺序以及 useEffect 的执行顺序吗 你知道 React18 并发模式 下执行情况是不同的吗 下面就让我们一起来看一看吧 React 16 先来看目前大部分人还在用
  • 【C语言】强符号和弱符号

    1 强符号 弱符号定义 编译器在编译源程序时 无论你是变量名 函数名 在它眼里 都是一个符号而已 用来表征一个地址 编译器会将这些符号集中 存放到一个叫符号表的 section 中 那么对于两个 c文件中存在的同名的变量 编译器该怎么选择呢
  • 切换零感知 H3C H5家庭智慧无线套装牛在哪?

    我头上有犄角 我身后有尾巴 大家看到这句歌词首先想到的是 小青龙 而小编认为这是对传统无线路由器最为真实的写照 犄角 就是无线路由器的外置天线 尾巴 也就是无线路由器的电源线以及连接各个端口的网络线路 随着大家审美的变化 无线路由器这种最为
  • c++网络编程

    网络编程模型 c s 模型 客户端服务器模型 b s 模型 浏览器服务器模型 1 tcp网络流程 服务器流程 1 创建套接字 2 完善服务器网络信息结构体 3 绑定服务器网络信息结构体 4 让服务器处于监听状态 5 accept阻塞等待客户
  • uniapp如何创建项目详细介绍,多环境配置、路由配置、代理配置、请求封装等。完整的搭建一个项目环境。

    1 前期准备及前言 一般可以使用HBuilderX创建项目 为了本次博客的完整性 先讲解一下HBuilderX创建uniapp项目 下载开发工具地址 https www dcloud io hbuilderx html 由于现在项目开发都是
  • 组件间的传值和钩子函数

    组件间的传值和生命周期钩子函数 所有的生命周期钩子自动绑定 this 上下文到实例中 因此你可以访问数据 对属性和方法进行运算 这意味着 你不能使用箭头函数来定义一个生命周期方法 例如 created gt this fetchTodos
  • redis性能测试工具redis-benchmark

    redis自带性能测试工具redis benchmark 在bin目录下 redis benchmark h h ip p 端口 a密码认证 c客户端的连接数 n请求数 d 指定数据大小 q只显示每秒的查询值 redis benchmark
  • gin框架16--如何记录日志

    gin框架16 如何记录日志 介绍 案例 说明 介绍 本文主要介绍如何将日志写入文件中 取消终端输出 案例 源码 package main import github com gin gonic gin io os func main gi
  • mysql 域名访问和ip访问的区别_域名与IP地址的联系与区别

    我们也知道每一台机都有一个唯一ip地址 特别难记 所以出现了今天的DNS 域名 当我们的计算机想要和一个远程机器连接时 我们可以申请连接该机器ip地址下的DNS 例如 www baidu com 连接的时候 DNS会提供一个ip地址 供服务
  • Ubuntu应用拓展(9)——精简Ubuntu系统工具、库缺失问题

    工具缺失问题 1 usr bin time 问题 usr bin time No such file or directory 解决方法 sudo apt install time 2 usr bin mandb 问题 usr bin ma
  • 牛客小白月赛75 D矩阵

    这题的边权有1 2所以不能用0 1bfs 虽然我也不是很会用 这题是可以说是个分层图 我们要利用小根堆进行排序 让边权小的排在前面 实现小根堆有两种方式 第一种是比较巧妙的 因为优先队列默认实现的是大根堆 所以我们可以把元素取反放进去 因为
  • LCD1602液晶显示屏的工作原理图是什么呢?

    本文重点是由深圳市兴宇合电子技术人员为大家介绍LCD1602液晶显示屏的工作原理以及原理图 希望对大家有所帮助 1 LCD1602液晶显示屏工作原理如下 LCD1602液晶显示屏通过电压来改变填充在两块平行板之间的液晶材料内部分子的排列状况
  • SIFT特征提取算法总结

    转自 http www jellon cn index php archives 374 一 综述 Scale invariant feature transform 简称SIFT 是一种图像特征提取与匹配算法 SIFT算法由David G
  • Java教程【01.01】 对象和类

    Java技术栈 对象和类 什么是对象和类 在Java中 对象是具有属性和行为的实体 而类是一组定义操作和属性的规范或蓝图 类包含数据成员 变量 和方法 函数 对象是类的实例化 如何创建一个对象 要创建一个对象 必须先定义一个类 下面是一个简
  • 模块化开发的时候,sqlsession如何配置多个typeAliasesPackage,mapperLocations

    如图 我们进行模块化开发的时候 往往我们每个人的bean和mapper都不在同一个路径包内 如果我们按照以下方式配置的话 就会报异常 大致上是因为不支持
  • VPP代码阅读中文注解--crc32.h

    static always inline u32 clib crc32c u8 s int len u32 v 0 if x86 64 for len gt 8 len 8 s 8 v mm crc32 u64 v u64 s else w