Avoid unnecessary coercions in index expressions.
Short/ushort types are valid as-is and don't need to be coerced to int. Change-Id: I41d6a537094e0c3f968e47926f541e0f6a3f92b4 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/341459 Commit-Queue: John Stiles <johnstiles@google.com> Commit-Queue: Brian Osman <brianosman@google.com> Auto-Submit: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com>
This commit is contained in:
parent
3c7298922f
commit
10160e4656
@ -2753,7 +2753,7 @@ std::unique_ptr<Expression> IRGenerator::convertIndex(std::unique_ptr<Expression
|
||||
if (!converted) {
|
||||
return nullptr;
|
||||
}
|
||||
if (converted->type() != *fContext.fUInt_Type) {
|
||||
if (!converted->type().isInteger()) {
|
||||
converted = this->coerce(std::move(converted), *fContext.fInt_Type);
|
||||
if (!converted) {
|
||||
return nullptr;
|
||||
|
@ -31,33 +31,33 @@ OpDecorate %_arr_float_int_4 ArrayStride 16
|
||||
%float_4 = OpConstant %float 4
|
||||
%int_0 = OpConstant %int 0
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_2 = OpConstant %int 2
|
||||
%uint = OpTypeInt 32 0
|
||||
%uint_1 = OpConstant %uint 1
|
||||
%int_2 = OpConstant %int 2
|
||||
%uint_3 = OpConstant %uint 3
|
||||
%main = OpFunction %void None %11
|
||||
%12 = OpLabel
|
||||
%13 = OpVariable %_ptr_Function__arr_float_int_4 Function
|
||||
%27 = OpVariable %_ptr_Function__arr_float_int_4 Function
|
||||
%32 = OpVariable %_ptr_Function__arr_float_int_4 Function
|
||||
%37 = OpVariable %_ptr_Function__arr_float_int_4 Function
|
||||
%33 = OpVariable %_ptr_Function__arr_float_int_4 Function
|
||||
%38 = OpVariable %_ptr_Function__arr_float_int_4 Function
|
||||
%22 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
|
||||
OpStore %13 %22
|
||||
%24 = OpAccessChain %_ptr_Function_float %13 %int_0
|
||||
%26 = OpLoad %float %24
|
||||
%28 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
|
||||
OpStore %27 %28
|
||||
%30 = OpAccessChain %_ptr_Function_float %27 %int_1
|
||||
%31 = OpLoad %float %30
|
||||
%33 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
|
||||
OpStore %32 %33
|
||||
%35 = OpAccessChain %_ptr_Function_float %32 %int_2
|
||||
%36 = OpLoad %float %35
|
||||
%38 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
|
||||
OpStore %37 %38
|
||||
%41 = OpAccessChain %_ptr_Function_float %37 %uint_3
|
||||
%31 = OpAccessChain %_ptr_Function_float %27 %uint_1
|
||||
%32 = OpLoad %float %31
|
||||
%34 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
|
||||
OpStore %33 %34
|
||||
%36 = OpAccessChain %_ptr_Function_float %33 %int_2
|
||||
%37 = OpLoad %float %36
|
||||
%39 = OpCompositeConstruct %_arr_float_int_4 %float_1 %float_2 %float_3 %float_4
|
||||
OpStore %38 %39
|
||||
%41 = OpAccessChain %_ptr_Function_float %38 %uint_3
|
||||
%42 = OpLoad %float %41
|
||||
%43 = OpCompositeConstruct %v4float %26 %31 %36 %42
|
||||
%43 = OpCompositeConstruct %v4float %26 %32 %37 %42
|
||||
OpStore %sk_FragColor %43
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
out vec4 sk_FragColor;
|
||||
void main() {
|
||||
sk_FragColor = vec4(float[4](1.0, 2.0, 3.0, 4.0)[0], float[4](1.0, 2.0, 3.0, 4.0)[1], float[4](1.0, 2.0, 3.0, 4.0)[2], float[4](1.0, 2.0, 3.0, 4.0)[3u]);
|
||||
sk_FragColor = vec4(float[4](1.0, 2.0, 3.0, 4.0)[0], float[4](1.0, 2.0, 3.0, 4.0)[1u], float[4](1.0, 2.0, 3.0, 4.0)[2], float[4](1.0, 2.0, 3.0, 4.0)[3u]);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user