1+ ; RUN: opt -S -passes=instcombine %s -o - | FileCheck %s
2+
3+ declare i64 @llrintf (float )
4+
5+ ; Positive number test
6+ ; CHECK-LABEL: define i64 @test_llrintf_pos()
7+ ; CHECK-NEXT: entry:
8+ ; CHECK-NEXT: ret i64 4
9+ define i64 @test_llrintf_pos () {
10+ entry:
11+ %val = call i64 @llrintf (float 3 .5 )
12+ ret i64 %val
13+ }
14+
15+ ; Negative number test
16+ ; CHECK-LABEL: define i64 @test_llrintf_neg()
17+ ; CHECK-NEXT: entry:
18+ ; CHECK-NEXT: ret i64 -2
19+ define i64 @test_llrintf_neg () {
20+ entry:
21+ %val = call i64 @llrintf (float -2 .5 )
22+ ret i64 %val
23+ }
24+
25+ ; Zero test
26+ ; CHECK-LABEL: define i64 @test_llrintf_zero()
27+ ; CHECK-NEXT: entry:
28+ ; CHECK-NEXT: ret i64 0
29+ define i64 @test_llrintf_zero () {
30+ entry:
31+ %val = call i64 @llrintf (float 0 .0 )
32+ ret i64 %val
33+ }
34+ 65 changes: 65 additions & 0 deletions65
35+ llvm/test/Transforms/InstCombine/llrintl_fp80.ll
36+ Original file line number Diff line number Diff line change
37+ @@ -0 ,0 +1 ,65 @@
38+ ; RUN: opt -S -passes=instcombine %s -o - | FileCheck %s
39+ declare i64 @llrintl (x86_fp80 )
40+
41+ ; Positive number
42+ ; CHECK-LABEL: define i64 @test_llrintl_pos()
43+ ; CHECK-NEXT: entry:
44+ ; CHECK-NEXT: ret i64 4
45+ define i64 @test_llrintl_pos () {
46+ entry:
47+ %val = call i64 @llrintl (x86_fp80 0xK4000E000000000000000)
48+ ret i64 %val
49+ }
50+
51+ ; Negative number
52+ ; CHECK-LABEL: define i64 @test_llrintl_neg()
53+ ; CHECK-NEXT: entry:
54+ ; CHECK-NEXT: ret i64 -2
55+ define i64 @test_llrintl_neg () {
56+ entry:
57+ %val = call i64 @llrintl (x86_fp80 0xKC000A000000000000000)
58+ ret i64 %val
59+ }
60+
61+ ; Zero
62+ ; CHECK-LABEL: define i64 @test_llrintl_zero()
63+ ; CHECK-NEXT: entry:
64+ ; CHECK-NEXT: ret i64 0
65+ define i64 @test_llrintl_zero () {
66+ entry:
67+ %val = call i64 @llrintl (x86_fp80 0xK00000000000000000000)
68+ ret i64 %val
69+ }
70+
71+ ; NaN
72+ ; CHECK-LABEL: define i64 @test_llrintl_nan()
73+ ; CHECK-NEXT: entry:
74+ ; CHECK-NEXT: %val = call i64 @llrintl(x86_fp80 0xK7FFF8000000000000000)
75+ ; CHECK-NEXT: ret i64 %val
76+ define i64 @test_llrintl_nan () {
77+ entry:
78+ %val = call i64 @llrintl (x86_fp80 0xK7FFF8000000000000000)
79+ ret i64 %val
80+ }
81+
82+ ; +Inf
83+ ; CHECK-LABEL: define i64 @test_llrintl_posinf()
84+ ; CHECK-NEXT: entry:
85+ ; CHECK-NEXT: %val = call i64 @llrintl(x86_fp80 0xK7FFF0000000000000000)
86+ ; CHECK-NEXT: ret i64 %val
87+ define i64 @test_llrintl_posinf () {
88+ entry:
89+ %val = call i64 @llrintl (x86_fp80 0xK7FFF0000000000000000)
90+ ret i64 %val
91+ }
92+
93+ ; -Inf
94+ ; CHECK-LABEL: define i64 @test_llrintl_neginf()
95+ ; CHECK-NEXT: entry:
96+ ; CHECK-NEXT: %val = call i64 @llrintl(x86_fp80 0xKFFFF0000000000000000)
97+ ; CHECK-NEXT: ret i64 %val
98+ define i64 @test_llrintl_neginf () {
99+ entry:
100+ %val = call i64 @llrintl (x86_fp80 0xKFFFF0000000000000000)
101+ ret i64 %val
102+ }
0 commit comments