@@ -12,10 +12,12 @@ float main() : SV_Target {
1212// CHECK: [[input1A:%[0-9]+]] = OpLoad %v2half %input1A
1313// CHECK: [[input1B:%[0-9]+]] = OpLoad %v2half %input1B
1414// CHECK: [[acc1:%[0-9]+]] = OpLoad %float %acc1
15- // CHECK: [[input1A_0:%[0-9]+]] = OpFConvert %v2float [[input1A]]
16- // CHECK: [[input1B_0:%[0-9]+]] = OpFConvert %v2float [[input1B]]
17- // CHECK: [[dot1:%[0-9]+]] = OpDot %float [[input1A_0]] [[input1B_0]]
18- // CHECK: [[res1:%[0-9]+]] = OpFAdd %float [[dot1]] [[acc1]]
15+ // CHECK: [[mult1A:%[0-9]+]] = OpFMul %v2half [[input1A]] [[input1B]]
16+ // CHECK: [[convert1A:%[0-9]+]] = OpFConvert %v2float [[mult1A]]
17+ // CHECK: [[extract1A_0:%[0-9]+]] = OpCompositeExtract %float [[convert1A]] 0
18+ // CHECK: [[extract1A_1:%[0-9]+]] = OpCompositeExtract %float [[convert1A]] 1
19+ // CHECK: [[add1A:%[0-9]+]] = OpFAdd %float [[extract1A_0]] [[extract1A_1]]
20+ // CHECK: [[res1:%[0-9]+]] = OpFAdd %float [[add1A]] [[acc1]]
1921 res += dot2add (input1A, input1B, acc1);
2022
2123 half4 input2;
@@ -26,10 +28,12 @@ float main() : SV_Target {
2628// CHECK: [[input2B:%[0-9]+]] = OpVectorShuffle %v2half [[input2_1]] [[input2_1]] 2 3
2729// CHECK: [[acc2_0:%[0-9]+]] = OpLoad %int %acc2
2830// CHECK: [[acc2:%[0-9]+]] = OpConvertSToF %float [[acc2_0]]
29- // CHECK: [[input2A_0:%[0-9]+]] = OpFConvert %v2float [[input2A]]
30- // CHECK: [[input2B_0:%[0-9]+]] = OpFConvert %v2float [[input2B]]
31- // CHECK: [[dot2:%[0-9]+]] = OpDot %float [[input2A_0]] [[input2B_0]]
32- // CHECK: [[res2:%[0-9]+]] = OpFAdd %float [[dot2]] [[acc2]]
31+ // CHECK: [[mult2A:%[0-9]+]] = OpFMul %v2half [[input2A]] [[input2B]]
32+ // CHECK: [[convert2A:%[0-9]+]] = OpFConvert %v2float [[mult2A]]
33+ // CHECK: [[extract2A_0:%[0-9]+]] = OpCompositeExtract %float [[convert2A]] 0
34+ // CHECK: [[extract2A_1:%[0-9]+]] = OpCompositeExtract %float [[convert2A]] 1
35+ // CHECK: [[add2A:%[0-9]+]] = OpFAdd %float [[extract2A_0]] [[extract2A_1]]
36+ // CHECK: [[res2:%[0-9]+]] = OpFAdd %float [[add2A]] [[acc2]]
3337 res += dot2add (input2.xy, input2.zw, acc2);
3438
3539 float input3A;
@@ -46,10 +50,12 @@ float main() : SV_Target {
4650// CHECK: [[input3B:%[0-9]+]] = OpConvertSToF %v2half [[input3B_5]]
4751// CHECK: [[acc3_1:%[0-9]+]] = OpLoad %half %acc3
4852// CHECK: [[acc3:%[0-9]+]] = OpFConvert %float [[acc3_1]]
49- // CHECK: [[input3A_0:%[0-9]+]] = OpFConvert %v2float [[input3A]]
50- // CHECK: [[input3B_0:%[0-9]+]] = OpFConvert %v2float [[input3B]]
51- // CHECK: [[dot3:%[0-9]+]] = OpDot %float [[input3A_0]] [[input3B_0]]
52- // CHECK: [[res3:%[0-9]+]] = OpFAdd %float [[dot3]] [[acc3]]
53+ // CHECK: [[mult3A:%[0-9]+]] = OpFMul %v2half [[input3A]] [[input3B]]
54+ // CHECK: [[convert3A:%[0-9]+]] = OpFConvert %v2float [[mult3A]]
55+ // CHECK: [[extract3A_0:%[0-9]+]] = OpCompositeExtract %float [[convert3A]] 0
56+ // CHECK: [[extract3A_1:%[0-9]+]] = OpCompositeExtract %float [[convert3A]] 1
57+ // CHECK: [[add3A:%[0-9]+]] = OpFAdd %float [[extract3A_0]] [[extract3A_1]]
58+ // CHECK: [[res3:%[0-9]+]] = OpFAdd %float [[add3A]] [[acc3]]
5359 res += dot2add (input3A, input3B, acc3);
5460
5561 return res;
0 commit comments