@@ -84,57 +84,6 @@ TEST_FUNC_ATTRS float test_ockl_acos_f32(float src) {
8484 return __ocml_acos_f32 (src);
8585}
8686
87- // CHECK-LABEL: define internal float @_ZL15test_ockl_fdot2Dv2_DF16_S_fbi
88- // CHECK-SAME: (<2 x half> [[A:%.*]], <2 x half> [[B:%.*]], float [[C:%.*]], i1 zeroext [[S:%.*]], i32 [[S_INT:%.*]]) #[[ATTR2]] {
89- // CHECK-NEXT: entry:
90- // CHECK-NEXT: [[RETVAL:%.*]] = alloca float, align 4, addrspace(5)
91- // CHECK-NEXT: [[A_ADDR:%.*]] = alloca <2 x half>, align 4, addrspace(5)
92- // CHECK-NEXT: [[B_ADDR:%.*]] = alloca <2 x half>, align 4, addrspace(5)
93- // CHECK-NEXT: [[C_ADDR:%.*]] = alloca float, align 4, addrspace(5)
94- // CHECK-NEXT: [[S_ADDR:%.*]] = alloca i8, align 1, addrspace(5)
95- // CHECK-NEXT: [[S_INT_ADDR:%.*]] = alloca i32, align 4, addrspace(5)
96- // CHECK-NEXT: [[X:%.*]] = alloca float, align 4, addrspace(5)
97- // CHECK-NEXT: [[Y:%.*]] = alloca float, align 4, addrspace(5)
98- // CHECK-NEXT: [[RETVAL_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[RETVAL]] to ptr
99- // CHECK-NEXT: [[A_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[A_ADDR]] to ptr
100- // CHECK-NEXT: [[B_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[B_ADDR]] to ptr
101- // CHECK-NEXT: [[C_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[C_ADDR]] to ptr
102- // CHECK-NEXT: [[S_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[S_ADDR]] to ptr
103- // CHECK-NEXT: [[S_INT_ADDR_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[S_INT_ADDR]] to ptr
104- // CHECK-NEXT: [[X_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[X]] to ptr
105- // CHECK-NEXT: [[Y_ASCAST:%.*]] = addrspacecast ptr addrspace(5) [[Y]] to ptr
106- // CHECK-NEXT: store <2 x half> [[A]], ptr [[A_ADDR_ASCAST]], align 4
107- // CHECK-NEXT: store <2 x half> [[B]], ptr [[B_ADDR_ASCAST]], align 4
108- // CHECK-NEXT: store float [[C]], ptr [[C_ADDR_ASCAST]], align 4
109- // CHECK-NEXT: [[FROMBOOL:%.*]] = zext i1 [[S]] to i8
110- // CHECK-NEXT: store i8 [[FROMBOOL]], ptr [[S_ADDR_ASCAST]], align 1
111- // CHECK-NEXT: store i32 [[S_INT]], ptr [[S_INT_ADDR_ASCAST]], align 4
112- // CHECK-NEXT: [[TMP0:%.*]] = load <2 x half>, ptr [[A_ADDR_ASCAST]], align 4
113- // CHECK-NEXT: [[TMP1:%.*]] = load <2 x half>, ptr [[B_ADDR_ASCAST]], align 4
114- // CHECK-NEXT: [[TMP2:%.*]] = load float, ptr [[C_ADDR_ASCAST]], align 4
115- // CHECK-NEXT: [[TMP3:%.*]] = load i8, ptr [[S_ADDR_ASCAST]], align 1
116- // CHECK-NEXT: [[TOBOOL:%.*]] = trunc i8 [[TMP3]] to i1
117- // CHECK-NEXT: [[CALL:%.*]] = call float @__ockl_fdot2(<2 x half> [[TMP0]], <2 x half> [[TMP1]], float [[TMP2]], i1 zeroext [[TOBOOL]]) #[[ATTR4]]
118- // CHECK-NEXT: store float [[CALL]], ptr [[X_ASCAST]], align 4
119- // CHECK-NEXT: [[TMP4:%.*]] = load <2 x half>, ptr [[A_ADDR_ASCAST]], align 4
120- // CHECK-NEXT: [[TMP5:%.*]] = load <2 x half>, ptr [[B_ADDR_ASCAST]], align 4
121- // CHECK-NEXT: [[TMP6:%.*]] = load float, ptr [[C_ADDR_ASCAST]], align 4
122- // CHECK-NEXT: [[TMP7:%.*]] = load i32, ptr [[S_INT_ADDR_ASCAST]], align 4
123- // CHECK-NEXT: [[TOBOOL1:%.*]] = icmp ne i32 [[TMP7]], 0
124- // CHECK-NEXT: [[CALL2:%.*]] = call float @__ockl_fdot2(<2 x half> [[TMP4]], <2 x half> [[TMP5]], float [[TMP6]], i1 zeroext [[TOBOOL1]]) #[[ATTR4]]
125- // CHECK-NEXT: store float [[CALL2]], ptr [[Y_ASCAST]], align 4
126- // CHECK-NEXT: [[TMP8:%.*]] = load float, ptr [[X_ASCAST]], align 4
127- // CHECK-NEXT: [[TMP9:%.*]] = load float, ptr [[Y_ASCAST]], align 4
128- // CHECK-NEXT: [[ADD:%.*]] = fadd float [[TMP8]], [[TMP9]]
129- // CHECK-NEXT: ret float [[ADD]]
130- //
131- TEST_FUNC_ATTRS float test_ockl_fdot2 (__2f16 a, __2f16 b, float c, bool s, int s_int) {
132- float x = __ockl_fdot2 (a, b, c, s);
133- float y = __ockl_fdot2 (a, b, c, s_int);
134- return x + y;
135- }
136-
137-
13887#ifdef _OPENMP
13988#pragma omp end declare target
14089#endif
0 commit comments