易企秀微网站如何做文字链接,嵌入式软件工程师待遇,中国交通建设集团有限公司招聘,4a广告公司都有哪些前面介绍过,在指令选择时会执行一系列优化过程,本节介绍下“比特级常量传播优化”的实现。
一:什么是比特级常量传播优化 举一个GLSL语言例子:
#version 450layout(location = 0) in vec4 inColor;
layout(location = 0) out vec4 outColor;void main() {vec4 tmp = inCo… 前面介绍过,在指令选择时会执行一系列优化过程,本节介绍下“比特级常量传播优化”的实现。
一:什么是比特级常量传播优化 举一个GLSL语言例子:
#version 450layout(location = 0) in vec4 inColor;
layout(location = 0) out vec4 outColor;void main() {vec4 tmp = inColor ivec4(0xFF00FF00); // 位与操作outColor = tmp;
}上面这段代码在编译器中间过程,会生产类似下面的IR指令:
%tmp = IAND %inColor, 0xFF00FF00
outColor = MOV %tmp对于 vec4 tmp = inColor ivec4(0xFF00FF00) 来说,0xFF00FF00 = 11111111 00000000 11111111 00000000 (二进制), 那么对于 tmp 的每个分量,bit[0–7] 和 bit[16–23] 永远是常量 0。 既然这些位是常量0,就不需要参与后面的计算了;比特级常量传播优化就是找出这些常量部分,优化位运算