blob: f0d3ecc761d1f9c98071029708253f3636da5b88 [file] [log] [blame]
Michael Ilsemanc5377432012-11-27 00:45:08 +00001; RUN: llvm-as < %s | llvm-dis | FileCheck %s
2; RUN: opt -S < %s | FileCheck %s
Duncan P. N. Exon Smithc8eccd12014-08-19 21:08:27 +00003; RUN: verify-uselistorder %s
Michael Ilsemanc5377432012-11-27 00:45:08 +00004
5@addr = external global i64
6@select = external global i1
7@vec = external global <3 x float>
8@arr = external global [3 x float]
9
10define float @none(float %x, float %y) {
11entry:
David Blaikiea79ac142015-02-27 21:17:42 +000012; CHECK: %vec = load <3 x float>, <3 x float>* @vec
13 %vec = load <3 x float>, <3 x float>* @vec
14; CHECK: %select = load i1, i1* @select
15 %select = load i1, i1* @select
16; CHECK: %arr = load [3 x float], [3 x float]* @arr
17 %arr = load [3 x float], [3 x float]* @arr
Michael Ilsemanc5377432012-11-27 00:45:08 +000018
19; CHECK: %a = fadd float %x, %y
20 %a = fadd float %x, %y
21; CHECK: %a_vec = fadd <3 x float> %vec, %vec
22 %a_vec = fadd <3 x float> %vec, %vec
23; CHECK: %b = fsub float %x, %y
24 %b = fsub float %x, %y
25; CHECK: %b_vec = fsub <3 x float> %vec, %vec
26 %b_vec = fsub <3 x float> %vec, %vec
27; CHECK: %c = fmul float %x, %y
28 %c = fmul float %x, %y
29; CHECK: %c_vec = fmul <3 x float> %vec, %vec
30 %c_vec = fmul <3 x float> %vec, %vec
31; CHECK: %d = fdiv float %x, %y
32 %d = fdiv float %x, %y
33; CHECK: %d_vec = fdiv <3 x float> %vec, %vec
34 %d_vec = fdiv <3 x float> %vec, %vec
35; CHECK: %e = frem float %x, %y
36 %e = frem float %x, %y
37; CHECK: %e_vec = frem <3 x float> %vec, %vec
38 %e_vec = frem <3 x float> %vec, %vec
39; CHECK: ret float %e
40 ret float %e
41}
42
43; CHECK: no_nan
44define float @no_nan(float %x, float %y) {
45entry:
David Blaikiea79ac142015-02-27 21:17:42 +000046; CHECK: %vec = load <3 x float>, <3 x float>* @vec
47 %vec = load <3 x float>, <3 x float>* @vec
48; CHECK: %select = load i1, i1* @select
49 %select = load i1, i1* @select
50; CHECK: %arr = load [3 x float], [3 x float]* @arr
51 %arr = load [3 x float], [3 x float]* @arr
Michael Ilsemanc5377432012-11-27 00:45:08 +000052
53; CHECK: %a = fadd nnan float %x, %y
54 %a = fadd nnan float %x, %y
55; CHECK: %a_vec = fadd nnan <3 x float> %vec, %vec
56 %a_vec = fadd nnan <3 x float> %vec, %vec
57; CHECK: %b = fsub nnan float %x, %y
58 %b = fsub nnan float %x, %y
59; CHECK: %b_vec = fsub nnan <3 x float> %vec, %vec
60 %b_vec = fsub nnan <3 x float> %vec, %vec
61; CHECK: %c = fmul nnan float %x, %y
62 %c = fmul nnan float %x, %y
63; CHECK: %c_vec = fmul nnan <3 x float> %vec, %vec
64 %c_vec = fmul nnan <3 x float> %vec, %vec
65; CHECK: %d = fdiv nnan float %x, %y
66 %d = fdiv nnan float %x, %y
67; CHECK: %d_vec = fdiv nnan <3 x float> %vec, %vec
68 %d_vec = fdiv nnan <3 x float> %vec, %vec
69; CHECK: %e = frem nnan float %x, %y
70 %e = frem nnan float %x, %y
71; CHECK: %e_vec = frem nnan <3 x float> %vec, %vec
72 %e_vec = frem nnan <3 x float> %vec, %vec
73; CHECK: ret float %e
74 ret float %e
75}
76
77; CHECK: no_nan_inf
78define float @no_nan_inf(float %x, float %y) {
79entry:
David Blaikiea79ac142015-02-27 21:17:42 +000080; CHECK: %vec = load <3 x float>, <3 x float>* @vec
81 %vec = load <3 x float>, <3 x float>* @vec
82; CHECK: %select = load i1, i1* @select
83 %select = load i1, i1* @select
84; CHECK: %arr = load [3 x float], [3 x float]* @arr
85 %arr = load [3 x float], [3 x float]* @arr
Michael Ilsemanc5377432012-11-27 00:45:08 +000086
87; CHECK: %a = fadd nnan ninf float %x, %y
88 %a = fadd ninf nnan float %x, %y
89; CHECK: %a_vec = fadd nnan <3 x float> %vec, %vec
90 %a_vec = fadd nnan <3 x float> %vec, %vec
91; CHECK: %b = fsub nnan float %x, %y
92 %b = fsub nnan float %x, %y
93; CHECK: %b_vec = fsub nnan ninf <3 x float> %vec, %vec
94 %b_vec = fsub ninf nnan <3 x float> %vec, %vec
95; CHECK: %c = fmul nnan float %x, %y
96 %c = fmul nnan float %x, %y
97; CHECK: %c_vec = fmul nnan <3 x float> %vec, %vec
98 %c_vec = fmul nnan <3 x float> %vec, %vec
99; CHECK: %d = fdiv nnan ninf float %x, %y
100 %d = fdiv ninf nnan float %x, %y
101; CHECK: %d_vec = fdiv nnan <3 x float> %vec, %vec
102 %d_vec = fdiv nnan <3 x float> %vec, %vec
103; CHECK: %e = frem nnan float %x, %y
104 %e = frem nnan float %x, %y
105; CHECK: %e_vec = frem nnan ninf <3 x float> %vec, %vec
106 %e_vec = frem ninf nnan <3 x float> %vec, %vec
107; CHECK: ret float %e
108 ret float %e
109}
110
111; CHECK: mixed_flags
112define float @mixed_flags(float %x, float %y) {
113entry:
David Blaikiea79ac142015-02-27 21:17:42 +0000114; CHECK: %vec = load <3 x float>, <3 x float>* @vec
115 %vec = load <3 x float>, <3 x float>* @vec
116; CHECK: %select = load i1, i1* @select
117 %select = load i1, i1* @select
118; CHECK: %arr = load [3 x float], [3 x float]* @arr
119 %arr = load [3 x float], [3 x float]* @arr
Michael Ilsemanc5377432012-11-27 00:45:08 +0000120
121; CHECK: %a = fadd nnan ninf float %x, %y
122 %a = fadd ninf nnan float %x, %y
123; CHECK: %a_vec = fadd nnan <3 x float> %vec, %vec
124 %a_vec = fadd nnan <3 x float> %vec, %vec
125; CHECK: %b = fsub fast float %x, %y
126 %b = fsub nnan nsz fast float %x, %y
127; CHECK: %b_vec = fsub nnan <3 x float> %vec, %vec
128 %b_vec = fsub nnan <3 x float> %vec, %vec
129; CHECK: %c = fmul fast float %x, %y
130 %c = fmul nsz fast arcp float %x, %y
131; CHECK: %c_vec = fmul nsz <3 x float> %vec, %vec
132 %c_vec = fmul nsz <3 x float> %vec, %vec
133; CHECK: %d = fdiv nnan ninf arcp float %x, %y
134 %d = fdiv arcp ninf nnan float %x, %y
135; CHECK: %d_vec = fdiv fast <3 x float> %vec, %vec
136 %d_vec = fdiv fast nnan arcp <3 x float> %vec, %vec
137; CHECK: %e = frem nnan nsz float %x, %y
138 %e = frem nnan nsz float %x, %y
139; CHECK: %e_vec = frem nnan <3 x float> %vec, %vec
140 %e_vec = frem nnan <3 x float> %vec, %vec
141; CHECK: ret float %e
142 ret float %e
143}