Skip to content

Commit e77b5c4

Browse files
author
Thomas Preud'homme
committed
Add __builtin_isnan(__fp16) testcase
Reviewed By: rjmccall Differential Revision: https://reviews.llvm.org/D97777
1 parent 4af1522 commit e77b5c4

File tree

1 file changed

+19
-0
lines changed

1 file changed

+19
-0
lines changed

clang/test/CodeGen/strictfp_builtins.c

+19
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,25 @@ void test_isinf_sign(double d) {
129129
return;
130130
}
131131

132+
// CHECK-LABEL: @test_fp16_isnan(
133+
// CHECK-NEXT: entry:
134+
// CHECK-NEXT: [[H_ADDR:%.*]] = alloca half, align 2
135+
// CHECK-NEXT: store half [[H:%.*]], half* [[H_ADDR]], align 2
136+
// CHECK-NEXT: [[TMP0:%.*]] = load half, half* [[H_ADDR]], align 2
137+
// CHECK-NEXT: [[BITCAST:%.*]] = bitcast half [[TMP0]] to i16
138+
// CHECK-NEXT: [[ABS:%.*]] = and i16 [[BITCAST]], [[#%u,0x7FFF]]
139+
// CHECK-NEXT: [[TMP1:%.*]] = sub i16 [[#%u,0x7C00]], [[ABS]]
140+
// CHECK-NEXT: [[ISNAN:%.*]] = lshr i16 [[TMP1]], 15
141+
// CHECK-NEXT: [[RES:%.*]] = zext i16 [[ISNAN]] to i32
142+
// CHECK-NEXT: call void @p(i8* getelementptr inbounds ([9 x i8], [9 x i8]* @.str.[[#STRID:STRID+1]], i64 0, i64 0), i32 [[RES]]) [[ATTR4]]
143+
// CHECK-NEXT: ret void
144+
//
145+
void test_fp16_isnan(__fp16 h) {
146+
P(isnan, (h));
147+
148+
return;
149+
}
150+
132151
// CHECK-LABEL: @test_float_isnan(
133152
// CHECK-NEXT: entry:
134153
// CHECK-NEXT: [[F_ADDR:%.*]] = alloca float, align 4

0 commit comments

Comments
 (0)