22
22
23
23
define noundef <2 x half > @test_normalize_half2 (<2 x half > noundef %p0 ) {
24
24
entry:
25
- ; CHECK: extractelement <2 x half> %{{.*}}, i64 0
26
25
; EXPCHECK: [[doth2:%.*]] = call half @llvm.dx.dot2.v2f16(<2 x half> %{{.*}}, <2 x half> %{{.*}})
27
26
; DOPCHECK: [[doth2:%.*]] = call half @dx.op.dot2.f16(i32 54, half %{{.*}}, half %{{.*}}, half %{{.*}}, half %{{.*}})
28
27
; EXPCHECK: [[rsqrt:%.*]] = call half @llvm.dx.rsqrt.f16(half [[doth2]])
37
36
38
37
define noundef <3 x half > @test_normalize_half3 (<3 x half > noundef %p0 ) {
39
38
entry:
40
- ; CHECK: extractelement <3 x half> %{{.*}}, i64 0
41
39
; EXPCHECK: [[doth3:%.*]] = call half @llvm.dx.dot3.v3f16(<3 x half> %{{.*}}, <3 x half> %{{.*}})
42
40
; DOPCHECK: [[doth3:%.*]] = call half @dx.op.dot3.f16(i32 55, half %{{.*}}, half %{{.*}}, half %{{.*}}, half %{{.*}})
43
41
; EXPCHECK: [[rsqrt:%.*]] = call half @llvm.dx.rsqrt.f16(half [[doth3]])
52
50
53
51
define noundef <4 x half > @test_normalize_half4 (<4 x half > noundef %p0 ) {
54
52
entry:
55
- ; CHECK: extractelement <4 x half> %{{.*}}, i64 0
56
53
; EXPCHECK: [[doth4:%.*]] = call half @llvm.dx.dot4.v4f16(<4 x half> %{{.*}}, <4 x half> %{{.*}})
57
54
; DOPCHECK: [[doth4:%.*]] = call half @dx.op.dot4.f16(i32 56, half %{{.*}}, half %{{.*}}, half %{{.*}}, half %{{.*}})
58
55
; EXPCHECK: [[rsqrt:%.*]] = call half @llvm.dx.rsqrt.f16(half [[doth4]])
74
71
75
72
define noundef <2 x float > @test_normalize_float2 (<2 x float > noundef %p0 ) {
76
73
entry:
77
- ; CHECK: extractelement <2 x float> %{{.*}}, i64 0
78
74
; EXPCHECK: [[dotf2:%.*]] = call float @llvm.dx.dot2.v2f32(<2 x float> %{{.*}}, <2 x float> %{{.*}})
79
75
; DOPCHECK: [[dotf2:%.*]] = call float @dx.op.dot2.f32(i32 54, float %{{.*}}, float %{{.*}}, float %{{.*}}, float %{{.*}})
80
76
; EXPCHECK: [[rsqrt:%.*]] = call float @llvm.dx.rsqrt.f32(float [[dotf2]])
89
85
90
86
define noundef <3 x float > @test_normalize_float3 (<3 x float > noundef %p0 ) {
91
87
entry:
92
- ; CHECK: extractelement <3 x float> %{{.*}}, i64 0
93
88
; EXPCHECK: [[dotf3:%.*]] = call float @llvm.dx.dot3.v3f32(<3 x float> %{{.*}}, <3 x float> %{{.*}})
94
89
; DOPCHECK: [[dotf3:%.*]] = call float @dx.op.dot3.f32(i32 55, float %{{.*}}, float %{{.*}}, float %{{.*}}, float %{{.*}})
95
90
; EXPCHECK: [[rsqrt:%.*]] = call float @llvm.dx.rsqrt.f32(float [[dotf3]])
@@ -104,7 +99,6 @@ entry:
104
99
105
100
define noundef <4 x float > @test_normalize_float4 (<4 x float > noundef %p0 ) {
106
101
entry:
107
- ; CHECK: extractelement <4 x float> %{{.*}}, i64 0
108
102
; EXPCHECK: [[dotf4:%.*]] = call float @llvm.dx.dot4.v4f32(<4 x float> %{{.*}}, <4 x float> %{{.*}})
109
103
; DOPCHECK: [[dotf4:%.*]] = call float @dx.op.dot4.f32(i32 56, float %{{.*}}, float %{{.*}}, float %{{.*}}, float %{{.*}})
110
104
; EXPCHECK: [[rsqrt:%.*]] = call float @llvm.dx.rsqrt.f32(float [[dotf4]])
0 commit comments