Skip to content

Commit 9cf647b

Browse files
committed
[PhaseOrdering] move an 'opt' test from x86 codegen; NFC
This file comes from 2007, and I'm not entirely sure of the motivation, but it was going through all of opt and llc. The llc part is almost certainly unnecessary as shown in the now auto-generated FileCheck lines. This test may be affected by a logic change suggested in: D87835
1 parent 8e71280 commit 9cf647b

File tree

2 files changed

+205
-183
lines changed

2 files changed

+205
-183
lines changed

llvm/test/CodeGen/X86/nancvt.ll

Lines changed: 0 additions & 183 deletions
This file was deleted.
Lines changed: 205 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,205 @@
1+
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2+
; RUN: opt < %s -O3 -S | FileCheck %s
3+
4+
; Compile time conversions of NaNs.
5+
6+
target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
7+
target triple = "i686-apple-darwin8"
8+
9+
%struct..0anon = type { float }
10+
%struct..1anon = type { double }
11+
12+
@fnan = constant [3 x i32] [ i32 2143831397, i32 2143831396, i32 2143831398 ]
13+
@dnan = constant [3 x i64] [ i64 9223235251041752696, i64 9223235251041752697, i64 9223235250773317239 ], align 8
14+
@fsnan = constant [3 x i32] [ i32 2139637093, i32 2139637092, i32 2139637094 ]
15+
@dsnan = constant [3 x i64] [ i64 9220983451228067448, i64 9220983451228067449, i64 9220983450959631991 ], align 8
16+
@.str = internal constant [10 x i8] c"%08x%08x\0A\00"
17+
@.str1 = internal constant [6 x i8] c"%08x\0A\00"
18+
19+
@var = external global i32
20+
21+
define i32 @main() {
22+
; CHECK-LABEL: @main(
23+
; CHECK-NEXT: entry:
24+
; CHECK-NEXT: store volatile i32 2147027116, i32* @var, align 4
25+
; CHECK-NEXT: store volatile i32 -1610612736, i32* @var, align 4
26+
; CHECK-NEXT: store volatile i32 2147027116, i32* @var, align 4
27+
; CHECK-NEXT: store volatile i32 -2147483648, i32* @var, align 4
28+
; CHECK-NEXT: store volatile i32 2147027116, i32* @var, align 4
29+
; CHECK-NEXT: store volatile i32 -1073741824, i32* @var, align 4
30+
; CHECK-NEXT: store volatile i32 2147228864, i32* @var, align 4
31+
; CHECK-NEXT: store volatile i32 2147228864, i32* @var, align 4
32+
; CHECK-NEXT: store volatile i32 2147228864, i32* @var, align 4
33+
; CHECK-NEXT: store volatile i32 2146502828, i32* @var, align 4
34+
; CHECK-NEXT: store volatile i32 -1610612736, i32* @var, align 4
35+
; CHECK-NEXT: store volatile i32 2146502828, i32* @var, align 4
36+
; CHECK-NEXT: store volatile i32 -2147483648, i32* @var, align 4
37+
; CHECK-NEXT: store volatile i32 2146502828, i32* @var, align 4
38+
; CHECK-NEXT: store volatile i32 -1073741824, i32* @var, align 4
39+
; CHECK-NEXT: store volatile i32 2143034560, i32* @var, align 4
40+
; CHECK-NEXT: store volatile i32 2143034560, i32* @var, align 4
41+
; CHECK-NEXT: store volatile i32 2143034560, i32* @var, align 4
42+
; CHECK-NEXT: ret i32 undef
43+
;
44+
entry:
45+
%retval = alloca i32, align 4
46+
%i = alloca i32, align 4
47+
%uf = alloca %struct..0anon, align 4
48+
%ud = alloca %struct..1anon, align 8
49+
%"alloca point" = bitcast i32 0 to i32
50+
store i32 0, i32* %i, align 4
51+
br label %bb23
52+
53+
bb: ; preds = %bb23
54+
%t = load i32, i32* %i, align 4
55+
%t1 = getelementptr [3 x i32], [3 x i32]* @fnan, i32 0, i32 %t
56+
%t2 = load i32, i32* %t1, align 4
57+
%t3 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
58+
%t34 = bitcast float* %t3 to i32*
59+
store i32 %t2, i32* %t34, align 4
60+
%t5 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
61+
%t6 = load float, float* %t5, align 4
62+
%t67 = fpext float %t6 to double
63+
%t8 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
64+
store double %t67, double* %t8, align 8
65+
%t9 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
66+
%t910 = bitcast double* %t9 to i64*
67+
%t11 = load i64, i64* %t910, align 8
68+
%t1112 = trunc i64 %t11 to i32
69+
%t13 = and i32 %t1112, -1
70+
%t14 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
71+
%t1415 = bitcast double* %t14 to i64*
72+
%t16 = load i64, i64* %t1415, align 8
73+
%.cast = zext i32 32 to i64
74+
%t17 = ashr i64 %t16, %.cast
75+
%t1718 = trunc i64 %t17 to i32
76+
%t19 = getelementptr [10 x i8], [10 x i8]* @.str, i32 0, i32 0
77+
store volatile i32 %t1718, i32* @var
78+
store volatile i32 %t13, i32* @var
79+
%t21 = load i32, i32* %i, align 4
80+
%t22 = add i32 %t21, 1
81+
store i32 %t22, i32* %i, align 4
82+
br label %bb23
83+
84+
bb23: ; preds = %bb, %entry
85+
%t24 = load i32, i32* %i, align 4
86+
%t25 = icmp sle i32 %t24, 2
87+
%t2526 = zext i1 %t25 to i8
88+
%toBool = icmp ne i8 %t2526, 0
89+
br i1 %toBool, label %bb, label %bb27
90+
91+
bb27: ; preds = %bb23
92+
store i32 0, i32* %i, align 4
93+
br label %bb46
94+
95+
bb28: ; preds = %bb46
96+
%t29 = load i32, i32* %i, align 4
97+
%t30 = getelementptr [3 x i64], [3 x i64]* @dnan, i32 0, i32 %t29
98+
%t31 = load i64, i64* %t30, align 8
99+
%t32 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
100+
%t3233 = bitcast double* %t32 to i64*
101+
store i64 %t31, i64* %t3233, align 8
102+
%t35 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
103+
%t36 = load double, double* %t35, align 8
104+
%t3637 = fptrunc double %t36 to float
105+
%t38 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
106+
store float %t3637, float* %t38, align 4
107+
%t39 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
108+
%t3940 = bitcast float* %t39 to i32*
109+
%t41 = load i32, i32* %t3940, align 4
110+
%t42 = getelementptr [6 x i8], [6 x i8]* @.str1, i32 0, i32 0
111+
store volatile i32 %t41, i32* @var
112+
%t44 = load i32, i32* %i, align 4
113+
%t45 = add i32 %t44, 1
114+
store i32 %t45, i32* %i, align 4
115+
br label %bb46
116+
117+
bb46: ; preds = %bb28, %bb27
118+
%t47 = load i32, i32* %i, align 4
119+
%t48 = icmp sle i32 %t47, 2
120+
%t4849 = zext i1 %t48 to i8
121+
%toBool50 = icmp ne i8 %t4849, 0
122+
br i1 %toBool50, label %bb28, label %bb51
123+
124+
bb51: ; preds = %bb46
125+
store i32 0, i32* %i, align 4
126+
br label %bb78
127+
128+
bb52: ; preds = %bb78
129+
%t53 = load i32, i32* %i, align 4
130+
%t54 = getelementptr [3 x i32], [3 x i32]* @fsnan, i32 0, i32 %t53
131+
%t55 = load i32, i32* %t54, align 4
132+
%t56 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
133+
%t5657 = bitcast float* %t56 to i32*
134+
store i32 %t55, i32* %t5657, align 4
135+
%t58 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
136+
%t59 = load float, float* %t58, align 4
137+
%t5960 = fpext float %t59 to double
138+
%t61 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
139+
store double %t5960, double* %t61, align 8
140+
%t62 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
141+
%t6263 = bitcast double* %t62 to i64*
142+
%t64 = load i64, i64* %t6263, align 8
143+
%t6465 = trunc i64 %t64 to i32
144+
%t66 = and i32 %t6465, -1
145+
%t68 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
146+
%t6869 = bitcast double* %t68 to i64*
147+
%t70 = load i64, i64* %t6869, align 8
148+
%.cast71 = zext i32 32 to i64
149+
%t72 = ashr i64 %t70, %.cast71
150+
%t7273 = trunc i64 %t72 to i32
151+
%t74 = getelementptr [10 x i8], [10 x i8]* @.str, i32 0, i32 0
152+
store volatile i32 %t7273, i32* @var
153+
store volatile i32 %t66, i32* @var
154+
%t76 = load i32, i32* %i, align 4
155+
%t77 = add i32 %t76, 1
156+
store i32 %t77, i32* %i, align 4
157+
br label %bb78
158+
159+
bb78: ; preds = %bb52, %bb51
160+
%t79 = load i32, i32* %i, align 4
161+
%t80 = icmp sle i32 %t79, 2
162+
%t8081 = zext i1 %t80 to i8
163+
%toBool82 = icmp ne i8 %t8081, 0
164+
br i1 %toBool82, label %bb52, label %bb83
165+
166+
bb83: ; preds = %bb78
167+
store i32 0, i32* %i, align 4
168+
br label %bb101
169+
170+
bb84: ; preds = %bb101
171+
%t85 = load i32, i32* %i, align 4
172+
%t86 = getelementptr [3 x i64], [3 x i64]* @dsnan, i32 0, i32 %t85
173+
%t87 = load i64, i64* %t86, align 8
174+
%t88 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
175+
%t8889 = bitcast double* %t88 to i64*
176+
store i64 %t87, i64* %t8889, align 8
177+
%t90 = getelementptr %struct..1anon, %struct..1anon* %ud, i32 0, i32 0
178+
%t91 = load double, double* %t90, align 8
179+
%t9192 = fptrunc double %t91 to float
180+
%t93 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
181+
store float %t9192, float* %t93, align 4
182+
%t94 = getelementptr %struct..0anon, %struct..0anon* %uf, i32 0, i32 0
183+
%t9495 = bitcast float* %t94 to i32*
184+
%t96 = load i32, i32* %t9495, align 4
185+
%t97 = getelementptr [6 x i8], [6 x i8]* @.str1, i32 0, i32 0
186+
store volatile i32 %t96, i32* @var
187+
%t99 = load i32, i32* %i, align 4
188+
%t100 = add i32 %t99, 1
189+
store i32 %t100, i32* %i, align 4
190+
br label %bb101
191+
192+
bb101: ; preds = %bb84, %bb83
193+
%t102 = load i32, i32* %i, align 4
194+
%t103 = icmp sle i32 %t102, 2
195+
%t103104 = zext i1 %t103 to i8
196+
%toBool105 = icmp ne i8 %t103104, 0
197+
br i1 %toBool105, label %bb84, label %bb106
198+
199+
bb106: ; preds = %bb101
200+
br label %return
201+
202+
return: ; preds = %bb106
203+
%retval107 = load i32, i32* %retval
204+
ret i32 %retval107
205+
}

0 commit comments

Comments
 (0)