@@ -14,8 +14,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
14
14
// CHECK-DAG: [[I0:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 0, i32 0, i8 0, i32 undef)
15
15
// CHECK-DAG: [[I1:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 0, i32 1, i8 0, i32 undef)
16
16
// CHECK: mul i32 [[I0]], [[I1]]
17
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 134 , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
18
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 167 , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
17
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 [[IDOT:[0-9]*]] , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
18
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 [[IMUL:[0-9]*]] , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
19
19
i += FUNC (i1[0 ], i1[1 ]);
20
20
21
21
// CHECK-DAG: [[I00:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 1, i32 0, i8 0, i32 undef)
@@ -25,8 +25,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
25
25
26
26
// CHECK: [[MUL:%.*]] = mul i32 [[I00]], [[I10]]
27
27
// CHECK: call i32 @dx.op.tertiary.i32(i32 48, i32 [[I01]], i32 [[I11]], i32 [[MUL]]) ; IMad(a,b,c)
28
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 134 , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
29
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 167 , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
28
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 [[IDOT]] , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
29
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 [[IMUL]] , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
30
30
i += FUNC (i2[0 ], i2[1 ]);
31
31
32
32
// CHECK-DAG: [[I00:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 2, i32 0, i8 0, i32 undef)
@@ -41,8 +41,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
41
41
// CHECK: [[PING:%.*]] = mul i32 [[I00]], [[I10]]
42
42
// CHECK: [[PONG:%.*]] = call i32 @dx.op.tertiary.i32(i32 48, i32 [[I01]], i32 [[I11]], i32 [[PING]]) ; IMad(a,b,c)
43
43
// CHECK: [[PING:%.*]] = call i32 @dx.op.tertiary.i32(i32 48, i32 [[I02]], i32 [[I12]], i32 [[PONG]]) ; IMad(a,b,c)
44
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 134 , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
45
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 167 , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
44
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 [[IDOT]] , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
45
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 [[IMUL]] , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
46
46
i += FUNC (i3[0 ], i3[1 ]);
47
47
48
48
// CHECK-DAG: [[I00:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 3, i32 0, i8 0, i32 undef)
@@ -58,17 +58,17 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
58
58
// CHECK: [[PONG:%.*]] = call i32 @dx.op.tertiary.i32(i32 48, i32 [[I01]], i32 [[I11]], i32 [[PING]]) ; IMad(a,b,c)
59
59
// CHECK: [[PING:%.*]] = call i32 @dx.op.tertiary.i32(i32 48, i32 [[I02]], i32 [[I12]], i32 [[PONG]]) ; IMad(a,b,c)
60
60
// CHECK: [[PONG:%.*]] = call i32 @dx.op.tertiary.i32(i32 48, i32 [[I03]], i32 [[I13]], i32 [[PING]]) ; IMad(a,b,c)
61
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 134 , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
62
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 167 , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
61
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 [[IDOT]] , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
62
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 [[IMUL]] , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
63
63
i += FUNC (i4[0 ], i4[1 ]);
64
64
65
65
float f = 0.0 ;
66
66
67
67
// CHECK-DAG: [[F0:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 4, i32 0, i8 0, i32 undef)
68
68
// CHECK-DAG: [[F1:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 4, i32 1, i8 0, i32 undef)
69
69
// CHECK: mul fast float [[F0]], [[F1]]
70
- // CGLDOT: call float @"dx.hl.op.rn.float (i32, <1 x float>, <1 x float>)"(i32 134 , <1 x float> %{{.*}}, <1 x float> %{{.*}})
71
- // CGLMUL: call float @"dx.hl.op.rn.float (i32, <1 x float>, <1 x float>)"(i32 167 , <1 x float> %{{.*}}, <1 x float> %{{.*}})
70
+ // CGLDOT: call float @"dx.hl.op.rn.float (i32, <1 x float>, <1 x float>)"(i32 [[IDOT]] , <1 x float> %{{.*}}, <1 x float> %{{.*}})
71
+ // CGLMUL: call float @"dx.hl.op.rn.float (i32, <1 x float>, <1 x float>)"(i32 [[IMUL]] , <1 x float> %{{.*}}, <1 x float> %{{.*}})
72
72
f += FUNC (f1[0 ], f1[1 ]);
73
73
74
74
// CHECK-DAG: [[F00:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 5, i32 0, i8 0, i32 undef)
@@ -77,8 +77,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
77
77
// CHECK-DAG: [[F11:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 5, i32 1, i8 1, i32 undef)
78
78
79
79
// CHECK: call float @dx.op.dot2.f32(i32 54, float [[F00]], float [[F01]], float [[F10]], float [[F11]])
80
- // CGLDOT: call float @"dx.hl.op.rn.float (i32, <2 x float>, <2 x float>)"(i32 134 , <2 x float> %{{.*}}, <2 x float> %{{.*}})
81
- // CGLMUL: call float @"dx.hl.op.rn.float (i32, <2 x float>, <2 x float>)"(i32 167 , <2 x float> %{{.*}}, <2 x float> %{{.*}})
80
+ // CGLDOT: call float @"dx.hl.op.rn.float (i32, <2 x float>, <2 x float>)"(i32 [[IDOT]] , <2 x float> %{{.*}}, <2 x float> %{{.*}})
81
+ // CGLMUL: call float @"dx.hl.op.rn.float (i32, <2 x float>, <2 x float>)"(i32 [[IMUL]] , <2 x float> %{{.*}}, <2 x float> %{{.*}})
82
82
f += FUNC (f2[0 ], f2[1 ]);
83
83
84
84
// CHECK-DAG: [[F00:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 6, i32 0, i8 0, i32 undef)
@@ -89,8 +89,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
89
89
// CHECK-DAG: [[F12:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 6, i32 1, i8 2, i32 undef)
90
90
91
91
// CHECK: call float @dx.op.dot3.f32(i32 55, float [[F00]], float [[F01]], float [[F02]], float [[F10]], float [[F11]], float [[F12]])
92
- // CGLDOT: call float @"dx.hl.op.rn.float (i32, <3 x float>, <3 x float>)"(i32 134 , <3 x float> %{{.*}}, <3 x float> %{{.*}})
93
- // CGLMUL: call float @"dx.hl.op.rn.float (i32, <3 x float>, <3 x float>)"(i32 167 , <3 x float> %{{.*}}, <3 x float> %{{.*}})
92
+ // CGLDOT: call float @"dx.hl.op.rn.float (i32, <3 x float>, <3 x float>)"(i32 [[IDOT]] , <3 x float> %{{.*}}, <3 x float> %{{.*}})
93
+ // CGLMUL: call float @"dx.hl.op.rn.float (i32, <3 x float>, <3 x float>)"(i32 [[IMUL]] , <3 x float> %{{.*}}, <3 x float> %{{.*}})
94
94
f += FUNC (f3[0 ], f3[1 ]);
95
95
96
96
// CHECK-DAG: [[F00:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 7, i32 0, i8 0, i32 undef)
@@ -103,16 +103,16 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
103
103
// CHECK-DAG: [[F13:%.*]] = call float @dx.op.loadInput.f32(i32 4, i32 7, i32 1, i8 3, i32 undef)
104
104
105
105
// CHECK: call float @dx.op.dot4.f32(i32 56, float [[F00]], float [[F01]], float [[F02]], float [[F03]], float [[F10]], float [[F11]], float [[F12]], float [[F13]])
106
- // CGLDOT: call float @"dx.hl.op.rn.float (i32, <4 x float>, <4 x float>)"(i32 134 , <4 x float> %{{.*}}, <4 x float> %{{.*}})
107
- // CGLMUL: call float @"dx.hl.op.rn.float (i32, <4 x float>, <4 x float>)"(i32 167 , <4 x float> %{{.*}}, <4 x float> %{{.*}})
106
+ // CGLDOT: call float @"dx.hl.op.rn.float (i32, <4 x float>, <4 x float>)"(i32 [[IDOT]] , <4 x float> %{{.*}}, <4 x float> %{{.*}})
107
+ // CGLMUL: call float @"dx.hl.op.rn.float (i32, <4 x float>, <4 x float>)"(i32 [[IMUL]] , <4 x float> %{{.*}}, <4 x float> %{{.*}})
108
108
f += FUNC (f4[0 ], f4[1 ]);
109
109
110
110
int u = 0 ;
111
111
// CHECK-DAG: [[I0:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 8, i32 0, i8 0, i32 undef)
112
112
// CHECK-DAG: [[I1:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 8, i32 1, i8 0, i32 undef)
113
113
// CHECK: mul i32 [[I0]], [[I1]]
114
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 349 , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
115
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 354 , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
114
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 [[UDOT:[0-9]*]] , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
115
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <1 x i32>, <1 x i32>)"(i32 [[UMUL:[0-9]*]] , <1 x i32> %{{.*}}, <1 x i32> %{{.*}})
116
116
u += FUNC (u1[0 ], u1[1 ]);
117
117
118
118
// CHECK-DAG: [[I00:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 9, i32 0, i8 0, i32 undef)
@@ -122,8 +122,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
122
122
123
123
// CHECK: [[MUL:%.*]] = mul i32 [[I00]], [[I10]]
124
124
// CHECK: call i32 @dx.op.tertiary.i32(i32 49, i32 [[I01]], i32 [[I11]], i32 [[MUL]]) ; UMad(a,b,c)
125
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 349 , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
126
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 354 , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
125
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 [[UDOT]] , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
126
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <2 x i32>, <2 x i32>)"(i32 [[UMUL]] , <2 x i32> %{{.*}}, <2 x i32> %{{.*}})
127
127
u += FUNC (u2[0 ], u2[1 ]);
128
128
129
129
// CHECK-DAG: [[I00:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 10, i32 0, i8 0, i32 undef)
@@ -136,8 +136,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
136
136
// CHECK: [[PING:%.*]] = mul i32 [[I00]], [[I10]]
137
137
// CHECK: [[PONG:%.*]] = call i32 @dx.op.tertiary.i32(i32 49, i32 [[I01]], i32 [[I11]], i32 [[PING]]) ; UMad(a,b,c)
138
138
// CHECK: [[PING:%.*]] = call i32 @dx.op.tertiary.i32(i32 49, i32 [[I02]], i32 [[I12]], i32 [[PONG]]) ; UMad(a,b,c)
139
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 349 , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
140
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 354 , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
139
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 [[UDOT]] , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
140
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <3 x i32>, <3 x i32>)"(i32 [[UMUL]] , <3 x i32> %{{.*}}, <3 x i32> %{{.*}})
141
141
u += FUNC (u3[0 ], u3[1 ]);
142
142
143
143
// CHECK-DAG: [[I00:%.*]] = call i32 @dx.op.loadInput.i32(i32 4, i32 11, i32 0, i8 0, i32 undef)
@@ -153,8 +153,8 @@ float4 main(int1 i1[2] : IO, int2 i2[2] : IT, int3 i3[2] : IH, int4 i4[2] : IF,
153
153
// CHECK: [[PONG:%.*]] = call i32 @dx.op.tertiary.i32(i32 49, i32 [[I01]], i32 [[I11]], i32 [[PING]]) ; UMad(a,b,c)
154
154
// CHECK: [[PING:%.*]] = call i32 @dx.op.tertiary.i32(i32 49, i32 [[I02]], i32 [[I12]], i32 [[PONG]]) ; UMad(a,b,c)
155
155
// CHECK: [[PONG:%.*]] = call i32 @dx.op.tertiary.i32(i32 49, i32 [[I03]], i32 [[I13]], i32 [[PING]]) ; UMad(a,b,c)
156
- // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 349 , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
157
- // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 354 , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
156
+ // CGLDOT: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 [[UDOT]] , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
157
+ // CGLMUL: call i32 @"dx.hl.op.rn.i32 (i32, <4 x i32>, <4 x i32>)"(i32 [[UMUL]] , <4 x i32> %{{.*}}, <4 x i32> %{{.*}})
158
158
u += FUNC (u4[0 ], u4[1 ]);
159
159
160
160
return float4 (i, f, u, 0 );
0 commit comments