OLD | NEW |
1 ; Test if we can read compare instructions. | 1 ; Test if we can read compare instructions. |
2 | 2 |
3 ; RUN: %p2i -i %s --insts | FileCheck %s | 3 ; RUN: %p2i -i %s --insts | FileCheck %s |
4 ; RUN: %p2i -i %s --args -notranslate -timing | \ | 4 ; RUN: %p2i -i %s --args -notranslate -timing | \ |
5 ; RUN: FileCheck --check-prefix=NOIR %s | 5 ; RUN: FileCheck --check-prefix=NOIR %s |
6 | 6 |
7 define internal i1 @IcmpI1(i32 %p1, i32 %p2) { | 7 define internal void @IcmpI1(i32 %p1, i32 %p2) { |
8 entry: | 8 entry: |
9 %a1 = trunc i32 %p1 to i1 | 9 %a1 = trunc i32 %p1 to i1 |
10 %a2 = trunc i32 %p2 to i1 | 10 %a2 = trunc i32 %p2 to i1 |
11 %veq = icmp eq i1 %a1, %a2 | 11 %veq = icmp eq i1 %a1, %a2 |
12 %vne = icmp ne i1 %a1, %a2 | 12 %vne = icmp ne i1 %a1, %a2 |
13 %vugt = icmp ugt i1 %a1, %a2 | 13 %vugt = icmp ugt i1 %a1, %a2 |
14 %vuge = icmp uge i1 %a1, %a2 | 14 %vuge = icmp uge i1 %a1, %a2 |
15 %vult = icmp ult i1 %a1, %a2 | 15 %vult = icmp ult i1 %a1, %a2 |
16 %vule = icmp ule i1 %a1, %a2 | 16 %vule = icmp ule i1 %a1, %a2 |
17 %vsgt = icmp sgt i1 %a1, %a2 | 17 %vsgt = icmp sgt i1 %a1, %a2 |
18 %vsge = icmp sge i1 %a1, %a2 | 18 %vsge = icmp sge i1 %a1, %a2 |
19 %vslt = icmp slt i1 %a1, %a2 | 19 %vslt = icmp slt i1 %a1, %a2 |
20 %vsle = icmp sle i1 %a1, %a2 | 20 %vsle = icmp sle i1 %a1, %a2 |
21 ret i1 %veq | 21 ret void |
22 } | 22 } |
23 | 23 |
24 ; CHECK: define internal i1 @IcmpI1(i32 %p1, i32 %p2) { | 24 ; CHECK: define internal void @IcmpI1(i32 %p1, i32 %p2) { |
25 ; CHECK-NEXT: entry: | 25 ; CHECK-NEXT: entry: |
26 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i1 | 26 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i1 |
27 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i1 | 27 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i1 |
28 ; CHECK-NEXT: %veq = icmp eq i1 %a1, %a2 | 28 ; CHECK-NEXT: %veq = icmp eq i1 %a1, %a2 |
29 ; CHECK-NEXT: %vne = icmp ne i1 %a1, %a2 | 29 ; CHECK-NEXT: %vne = icmp ne i1 %a1, %a2 |
30 ; CHECK-NEXT: %vugt = icmp ugt i1 %a1, %a2 | 30 ; CHECK-NEXT: %vugt = icmp ugt i1 %a1, %a2 |
31 ; CHECK-NEXT: %vuge = icmp uge i1 %a1, %a2 | 31 ; CHECK-NEXT: %vuge = icmp uge i1 %a1, %a2 |
32 ; CHECK-NEXT: %vult = icmp ult i1 %a1, %a2 | 32 ; CHECK-NEXT: %vult = icmp ult i1 %a1, %a2 |
33 ; CHECK-NEXT: %vule = icmp ule i1 %a1, %a2 | 33 ; CHECK-NEXT: %vule = icmp ule i1 %a1, %a2 |
34 ; CHECK-NEXT: %vsgt = icmp sgt i1 %a1, %a2 | 34 ; CHECK-NEXT: %vsgt = icmp sgt i1 %a1, %a2 |
35 ; CHECK-NEXT: %vsge = icmp sge i1 %a1, %a2 | 35 ; CHECK-NEXT: %vsge = icmp sge i1 %a1, %a2 |
36 ; CHECK-NEXT: %vslt = icmp slt i1 %a1, %a2 | 36 ; CHECK-NEXT: %vslt = icmp slt i1 %a1, %a2 |
37 ; CHECK-NEXT: %vsle = icmp sle i1 %a1, %a2 | 37 ; CHECK-NEXT: %vsle = icmp sle i1 %a1, %a2 |
38 ; CHECK-NEXT: ret i1 %veq | 38 ; CHECK-NEXT: ret void |
39 ; CHECK-NEXT: } | 39 ; CHECK-NEXT: } |
40 | 40 |
41 define internal i1 @IcmpI8(i32 %p1, i32 %p2) { | 41 define internal void @IcmpI8(i32 %p1, i32 %p2) { |
42 entry: | 42 entry: |
43 %a1 = trunc i32 %p1 to i8 | 43 %a1 = trunc i32 %p1 to i8 |
44 %a2 = trunc i32 %p2 to i8 | 44 %a2 = trunc i32 %p2 to i8 |
45 %veq = icmp eq i8 %a1, %a2 | 45 %veq = icmp eq i8 %a1, %a2 |
46 %vne = icmp ne i8 %a1, %a2 | 46 %vne = icmp ne i8 %a1, %a2 |
47 %vugt = icmp ugt i8 %a1, %a2 | 47 %vugt = icmp ugt i8 %a1, %a2 |
48 %vuge = icmp uge i8 %a1, %a2 | 48 %vuge = icmp uge i8 %a1, %a2 |
49 %vult = icmp ult i8 %a1, %a2 | 49 %vult = icmp ult i8 %a1, %a2 |
50 %vule = icmp ule i8 %a1, %a2 | 50 %vule = icmp ule i8 %a1, %a2 |
51 %vsgt = icmp sgt i8 %a1, %a2 | 51 %vsgt = icmp sgt i8 %a1, %a2 |
52 %vsge = icmp sge i8 %a1, %a2 | 52 %vsge = icmp sge i8 %a1, %a2 |
53 %vslt = icmp slt i8 %a1, %a2 | 53 %vslt = icmp slt i8 %a1, %a2 |
54 %vsle = icmp sle i8 %a1, %a2 | 54 %vsle = icmp sle i8 %a1, %a2 |
55 ret i1 %veq | 55 ret void |
56 } | 56 } |
57 | 57 |
58 ; CHECK-NEXT: define internal i1 @IcmpI8(i32 %p1, i32 %p2) { | 58 ; CHECK-NEXT: define internal void @IcmpI8(i32 %p1, i32 %p2) { |
59 ; CHECK-NEXT: entry: | 59 ; CHECK-NEXT: entry: |
60 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i8 | 60 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i8 |
61 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i8 | 61 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i8 |
62 ; CHECK-NEXT: %veq = icmp eq i8 %a1, %a2 | 62 ; CHECK-NEXT: %veq = icmp eq i8 %a1, %a2 |
63 ; CHECK-NEXT: %vne = icmp ne i8 %a1, %a2 | 63 ; CHECK-NEXT: %vne = icmp ne i8 %a1, %a2 |
64 ; CHECK-NEXT: %vugt = icmp ugt i8 %a1, %a2 | 64 ; CHECK-NEXT: %vugt = icmp ugt i8 %a1, %a2 |
65 ; CHECK-NEXT: %vuge = icmp uge i8 %a1, %a2 | 65 ; CHECK-NEXT: %vuge = icmp uge i8 %a1, %a2 |
66 ; CHECK-NEXT: %vult = icmp ult i8 %a1, %a2 | 66 ; CHECK-NEXT: %vult = icmp ult i8 %a1, %a2 |
67 ; CHECK-NEXT: %vule = icmp ule i8 %a1, %a2 | 67 ; CHECK-NEXT: %vule = icmp ule i8 %a1, %a2 |
68 ; CHECK-NEXT: %vsgt = icmp sgt i8 %a1, %a2 | 68 ; CHECK-NEXT: %vsgt = icmp sgt i8 %a1, %a2 |
69 ; CHECK-NEXT: %vsge = icmp sge i8 %a1, %a2 | 69 ; CHECK-NEXT: %vsge = icmp sge i8 %a1, %a2 |
70 ; CHECK-NEXT: %vslt = icmp slt i8 %a1, %a2 | 70 ; CHECK-NEXT: %vslt = icmp slt i8 %a1, %a2 |
71 ; CHECK-NEXT: %vsle = icmp sle i8 %a1, %a2 | 71 ; CHECK-NEXT: %vsle = icmp sle i8 %a1, %a2 |
72 ; CHECK-NEXT: ret i1 %veq | 72 ; CHECK-NEXT: ret void |
73 ; CHECK-NEXT: } | 73 ; CHECK-NEXT: } |
74 | 74 |
75 define internal i1 @IcmpI16(i32 %p1, i32 %p2) { | 75 define internal void @IcmpI16(i32 %p1, i32 %p2) { |
76 entry: | 76 entry: |
77 %a1 = trunc i32 %p1 to i16 | 77 %a1 = trunc i32 %p1 to i16 |
78 %a2 = trunc i32 %p2 to i16 | 78 %a2 = trunc i32 %p2 to i16 |
79 %veq = icmp eq i16 %a1, %a2 | 79 %veq = icmp eq i16 %a1, %a2 |
80 %vne = icmp ne i16 %a1, %a2 | 80 %vne = icmp ne i16 %a1, %a2 |
81 %vugt = icmp ugt i16 %a1, %a2 | 81 %vugt = icmp ugt i16 %a1, %a2 |
82 %vuge = icmp uge i16 %a1, %a2 | 82 %vuge = icmp uge i16 %a1, %a2 |
83 %vult = icmp ult i16 %a1, %a2 | 83 %vult = icmp ult i16 %a1, %a2 |
84 %vule = icmp ule i16 %a1, %a2 | 84 %vule = icmp ule i16 %a1, %a2 |
85 %vsgt = icmp sgt i16 %a1, %a2 | 85 %vsgt = icmp sgt i16 %a1, %a2 |
86 %vsge = icmp sge i16 %a1, %a2 | 86 %vsge = icmp sge i16 %a1, %a2 |
87 %vslt = icmp slt i16 %a1, %a2 | 87 %vslt = icmp slt i16 %a1, %a2 |
88 %vsle = icmp sle i16 %a1, %a2 | 88 %vsle = icmp sle i16 %a1, %a2 |
89 ret i1 %veq | 89 ret void |
90 } | 90 } |
91 | 91 |
92 ; CHECK-NEXT: define internal i1 @IcmpI16(i32 %p1, i32 %p2) { | 92 ; CHECK-NEXT: define internal void @IcmpI16(i32 %p1, i32 %p2) { |
93 ; CHECK-NEXT: entry: | 93 ; CHECK-NEXT: entry: |
94 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i16 | 94 ; CHECK-NEXT: %a1 = trunc i32 %p1 to i16 |
95 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i16 | 95 ; CHECK-NEXT: %a2 = trunc i32 %p2 to i16 |
96 ; CHECK-NEXT: %veq = icmp eq i16 %a1, %a2 | 96 ; CHECK-NEXT: %veq = icmp eq i16 %a1, %a2 |
97 ; CHECK-NEXT: %vne = icmp ne i16 %a1, %a2 | 97 ; CHECK-NEXT: %vne = icmp ne i16 %a1, %a2 |
98 ; CHECK-NEXT: %vugt = icmp ugt i16 %a1, %a2 | 98 ; CHECK-NEXT: %vugt = icmp ugt i16 %a1, %a2 |
99 ; CHECK-NEXT: %vuge = icmp uge i16 %a1, %a2 | 99 ; CHECK-NEXT: %vuge = icmp uge i16 %a1, %a2 |
100 ; CHECK-NEXT: %vult = icmp ult i16 %a1, %a2 | 100 ; CHECK-NEXT: %vult = icmp ult i16 %a1, %a2 |
101 ; CHECK-NEXT: %vule = icmp ule i16 %a1, %a2 | 101 ; CHECK-NEXT: %vule = icmp ule i16 %a1, %a2 |
102 ; CHECK-NEXT: %vsgt = icmp sgt i16 %a1, %a2 | 102 ; CHECK-NEXT: %vsgt = icmp sgt i16 %a1, %a2 |
103 ; CHECK-NEXT: %vsge = icmp sge i16 %a1, %a2 | 103 ; CHECK-NEXT: %vsge = icmp sge i16 %a1, %a2 |
104 ; CHECK-NEXT: %vslt = icmp slt i16 %a1, %a2 | 104 ; CHECK-NEXT: %vslt = icmp slt i16 %a1, %a2 |
105 ; CHECK-NEXT: %vsle = icmp sle i16 %a1, %a2 | 105 ; CHECK-NEXT: %vsle = icmp sle i16 %a1, %a2 |
106 ; CHECK-NEXT: ret i1 %veq | 106 ; CHECK-NEXT: ret void |
107 ; CHECK-NEXT: } | 107 ; CHECK-NEXT: } |
108 | 108 |
109 define internal i1 @IcmpI32(i32 %a1, i32 %a2) { | 109 define internal void @IcmpI32(i32 %a1, i32 %a2) { |
110 entry: | 110 entry: |
111 %veq = icmp eq i32 %a1, %a2 | 111 %veq = icmp eq i32 %a1, %a2 |
112 %vne = icmp ne i32 %a1, %a2 | 112 %vne = icmp ne i32 %a1, %a2 |
113 %vugt = icmp ugt i32 %a1, %a2 | 113 %vugt = icmp ugt i32 %a1, %a2 |
114 %vuge = icmp uge i32 %a1, %a2 | 114 %vuge = icmp uge i32 %a1, %a2 |
115 %vult = icmp ult i32 %a1, %a2 | 115 %vult = icmp ult i32 %a1, %a2 |
116 %vule = icmp ule i32 %a1, %a2 | 116 %vule = icmp ule i32 %a1, %a2 |
117 %vsgt = icmp sgt i32 %a1, %a2 | 117 %vsgt = icmp sgt i32 %a1, %a2 |
118 %vsge = icmp sge i32 %a1, %a2 | 118 %vsge = icmp sge i32 %a1, %a2 |
119 %vslt = icmp slt i32 %a1, %a2 | 119 %vslt = icmp slt i32 %a1, %a2 |
120 %vsle = icmp sle i32 %a1, %a2 | 120 %vsle = icmp sle i32 %a1, %a2 |
121 ret i1 %veq | 121 ret void |
122 } | 122 } |
123 | 123 |
124 ; CHECK-NEXT: define internal i1 @IcmpI32(i32 %a1, i32 %a2) { | 124 ; CHECK-NEXT: define internal void @IcmpI32(i32 %a1, i32 %a2) { |
125 ; CHECK-NEXT: entry: | 125 ; CHECK-NEXT: entry: |
126 ; CHECK-NEXT: %veq = icmp eq i32 %a1, %a2 | 126 ; CHECK-NEXT: %veq = icmp eq i32 %a1, %a2 |
127 ; CHECK-NEXT: %vne = icmp ne i32 %a1, %a2 | 127 ; CHECK-NEXT: %vne = icmp ne i32 %a1, %a2 |
128 ; CHECK-NEXT: %vugt = icmp ugt i32 %a1, %a2 | 128 ; CHECK-NEXT: %vugt = icmp ugt i32 %a1, %a2 |
129 ; CHECK-NEXT: %vuge = icmp uge i32 %a1, %a2 | 129 ; CHECK-NEXT: %vuge = icmp uge i32 %a1, %a2 |
130 ; CHECK-NEXT: %vult = icmp ult i32 %a1, %a2 | 130 ; CHECK-NEXT: %vult = icmp ult i32 %a1, %a2 |
131 ; CHECK-NEXT: %vule = icmp ule i32 %a1, %a2 | 131 ; CHECK-NEXT: %vule = icmp ule i32 %a1, %a2 |
132 ; CHECK-NEXT: %vsgt = icmp sgt i32 %a1, %a2 | 132 ; CHECK-NEXT: %vsgt = icmp sgt i32 %a1, %a2 |
133 ; CHECK-NEXT: %vsge = icmp sge i32 %a1, %a2 | 133 ; CHECK-NEXT: %vsge = icmp sge i32 %a1, %a2 |
134 ; CHECK-NEXT: %vslt = icmp slt i32 %a1, %a2 | 134 ; CHECK-NEXT: %vslt = icmp slt i32 %a1, %a2 |
135 ; CHECK-NEXT: %vsle = icmp sle i32 %a1, %a2 | 135 ; CHECK-NEXT: %vsle = icmp sle i32 %a1, %a2 |
136 ; CHECK-NEXT: ret i1 %veq | 136 ; CHECK-NEXT: ret void |
137 ; CHECK-NEXT: } | 137 ; CHECK-NEXT: } |
138 | 138 |
139 define internal i1 @IcmpI64(i64 %a1, i64 %a2) { | 139 define internal void @IcmpI64(i64 %a1, i64 %a2) { |
140 entry: | 140 entry: |
141 %veq = icmp eq i64 %a1, %a2 | 141 %veq = icmp eq i64 %a1, %a2 |
142 %vne = icmp ne i64 %a1, %a2 | 142 %vne = icmp ne i64 %a1, %a2 |
143 %vugt = icmp ugt i64 %a1, %a2 | 143 %vugt = icmp ugt i64 %a1, %a2 |
144 %vuge = icmp uge i64 %a1, %a2 | 144 %vuge = icmp uge i64 %a1, %a2 |
145 %vult = icmp ult i64 %a1, %a2 | 145 %vult = icmp ult i64 %a1, %a2 |
146 %vule = icmp ule i64 %a1, %a2 | 146 %vule = icmp ule i64 %a1, %a2 |
147 %vsgt = icmp sgt i64 %a1, %a2 | 147 %vsgt = icmp sgt i64 %a1, %a2 |
148 %vsge = icmp sge i64 %a1, %a2 | 148 %vsge = icmp sge i64 %a1, %a2 |
149 %vslt = icmp slt i64 %a1, %a2 | 149 %vslt = icmp slt i64 %a1, %a2 |
150 %vsle = icmp sle i64 %a1, %a2 | 150 %vsle = icmp sle i64 %a1, %a2 |
151 ret i1 %veq | 151 ret void |
152 } | 152 } |
153 | 153 |
154 ; CHECK-NEXT: define internal i1 @IcmpI64(i64 %a1, i64 %a2) { | 154 ; CHECK-NEXT: define internal void @IcmpI64(i64 %a1, i64 %a2) { |
155 ; CHECK-NEXT: entry: | 155 ; CHECK-NEXT: entry: |
156 ; CHECK-NEXT: %veq = icmp eq i64 %a1, %a2 | 156 ; CHECK-NEXT: %veq = icmp eq i64 %a1, %a2 |
157 ; CHECK-NEXT: %vne = icmp ne i64 %a1, %a2 | 157 ; CHECK-NEXT: %vne = icmp ne i64 %a1, %a2 |
158 ; CHECK-NEXT: %vugt = icmp ugt i64 %a1, %a2 | 158 ; CHECK-NEXT: %vugt = icmp ugt i64 %a1, %a2 |
159 ; CHECK-NEXT: %vuge = icmp uge i64 %a1, %a2 | 159 ; CHECK-NEXT: %vuge = icmp uge i64 %a1, %a2 |
160 ; CHECK-NEXT: %vult = icmp ult i64 %a1, %a2 | 160 ; CHECK-NEXT: %vult = icmp ult i64 %a1, %a2 |
161 ; CHECK-NEXT: %vule = icmp ule i64 %a1, %a2 | 161 ; CHECK-NEXT: %vule = icmp ule i64 %a1, %a2 |
162 ; CHECK-NEXT: %vsgt = icmp sgt i64 %a1, %a2 | 162 ; CHECK-NEXT: %vsgt = icmp sgt i64 %a1, %a2 |
163 ; CHECK-NEXT: %vsge = icmp sge i64 %a1, %a2 | 163 ; CHECK-NEXT: %vsge = icmp sge i64 %a1, %a2 |
164 ; CHECK-NEXT: %vslt = icmp slt i64 %a1, %a2 | 164 ; CHECK-NEXT: %vslt = icmp slt i64 %a1, %a2 |
165 ; CHECK-NEXT: %vsle = icmp sle i64 %a1, %a2 | 165 ; CHECK-NEXT: %vsle = icmp sle i64 %a1, %a2 |
166 ; CHECK-NEXT: ret i1 %veq | 166 ; CHECK-NEXT: ret void |
167 ; CHECK-NEXT: } | 167 ; CHECK-NEXT: } |
168 | 168 |
169 define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { | 169 define internal <4 x i1> @IcmpV4xI1(<4 x i1> %a1, <4 x i1> %a2) { |
170 entry: | 170 entry: |
171 %veq = icmp eq <4 x i1> %a1, %a2 | 171 %veq = icmp eq <4 x i1> %a1, %a2 |
172 %vne = icmp ne <4 x i1> %a1, %a2 | 172 %vne = icmp ne <4 x i1> %a1, %a2 |
173 %vugt = icmp ugt <4 x i1> %a1, %a2 | 173 %vugt = icmp ugt <4 x i1> %a1, %a2 |
174 %vuge = icmp uge <4 x i1> %a1, %a2 | 174 %vuge = icmp uge <4 x i1> %a1, %a2 |
175 %vult = icmp ult <4 x i1> %a1, %a2 | 175 %vult = icmp ult <4 x i1> %a1, %a2 |
176 %vule = icmp ule <4 x i1> %a1, %a2 | 176 %vule = icmp ule <4 x i1> %a1, %a2 |
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
339 ; CHECK-NEXT: %vuge = icmp uge <4 x i32> %a1, %a2 | 339 ; CHECK-NEXT: %vuge = icmp uge <4 x i32> %a1, %a2 |
340 ; CHECK-NEXT: %vult = icmp ult <4 x i32> %a1, %a2 | 340 ; CHECK-NEXT: %vult = icmp ult <4 x i32> %a1, %a2 |
341 ; CHECK-NEXT: %vule = icmp ule <4 x i32> %a1, %a2 | 341 ; CHECK-NEXT: %vule = icmp ule <4 x i32> %a1, %a2 |
342 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i32> %a1, %a2 | 342 ; CHECK-NEXT: %vsgt = icmp sgt <4 x i32> %a1, %a2 |
343 ; CHECK-NEXT: %vsge = icmp sge <4 x i32> %a1, %a2 | 343 ; CHECK-NEXT: %vsge = icmp sge <4 x i32> %a1, %a2 |
344 ; CHECK-NEXT: %vslt = icmp slt <4 x i32> %a1, %a2 | 344 ; CHECK-NEXT: %vslt = icmp slt <4 x i32> %a1, %a2 |
345 ; CHECK-NEXT: %vsle = icmp sle <4 x i32> %a1, %a2 | 345 ; CHECK-NEXT: %vsle = icmp sle <4 x i32> %a1, %a2 |
346 ; CHECK-NEXT: ret <4 x i1> %veq | 346 ; CHECK-NEXT: ret <4 x i1> %veq |
347 ; CHECK-NEXT: } | 347 ; CHECK-NEXT: } |
348 | 348 |
349 define internal i1 @FcmpFloat(float %a1, float %a2) { | 349 define internal void @FcmpFloat(float %a1, float %a2) { |
350 entry: | 350 entry: |
351 %vfalse = fcmp false float %a1, %a2 | 351 %vfalse = fcmp false float %a1, %a2 |
352 %voeq = fcmp oeq float %a1, %a2 | 352 %voeq = fcmp oeq float %a1, %a2 |
353 %vogt = fcmp ogt float %a1, %a2 | 353 %vogt = fcmp ogt float %a1, %a2 |
354 %voge = fcmp oge float %a1, %a2 | 354 %voge = fcmp oge float %a1, %a2 |
355 %volt = fcmp olt float %a1, %a2 | 355 %volt = fcmp olt float %a1, %a2 |
356 %vole = fcmp ole float %a1, %a2 | 356 %vole = fcmp ole float %a1, %a2 |
357 %vone = fcmp one float %a1, %a2 | 357 %vone = fcmp one float %a1, %a2 |
358 %ord = fcmp ord float %a1, %a2 | 358 %ord = fcmp ord float %a1, %a2 |
359 %vueq = fcmp ueq float %a1, %a2 | 359 %vueq = fcmp ueq float %a1, %a2 |
360 %vugt = fcmp ugt float %a1, %a2 | 360 %vugt = fcmp ugt float %a1, %a2 |
361 %vuge = fcmp uge float %a1, %a2 | 361 %vuge = fcmp uge float %a1, %a2 |
362 %vult = fcmp ult float %a1, %a2 | 362 %vult = fcmp ult float %a1, %a2 |
363 %vule = fcmp ule float %a1, %a2 | 363 %vule = fcmp ule float %a1, %a2 |
364 %vune = fcmp une float %a1, %a2 | 364 %vune = fcmp une float %a1, %a2 |
365 %vuno = fcmp uno float %a1, %a2 | 365 %vuno = fcmp uno float %a1, %a2 |
366 %vtrue = fcmp true float %a1, %a2 | 366 %vtrue = fcmp true float %a1, %a2 |
367 ret i1 %voeq | 367 ret void |
368 } | 368 } |
369 | 369 |
370 ; CHECK-NEXT: define internal i1 @FcmpFloat(float %a1, float %a2) { | 370 ; CHECK-NEXT: define internal void @FcmpFloat(float %a1, float %a2) { |
371 ; CHECK-NEXT: entry: | 371 ; CHECK-NEXT: entry: |
372 ; CHECK-NEXT: %vfalse = fcmp false float %a1, %a2 | 372 ; CHECK-NEXT: %vfalse = fcmp false float %a1, %a2 |
373 ; CHECK-NEXT: %voeq = fcmp oeq float %a1, %a2 | 373 ; CHECK-NEXT: %voeq = fcmp oeq float %a1, %a2 |
374 ; CHECK-NEXT: %vogt = fcmp ogt float %a1, %a2 | 374 ; CHECK-NEXT: %vogt = fcmp ogt float %a1, %a2 |
375 ; CHECK-NEXT: %voge = fcmp oge float %a1, %a2 | 375 ; CHECK-NEXT: %voge = fcmp oge float %a1, %a2 |
376 ; CHECK-NEXT: %volt = fcmp olt float %a1, %a2 | 376 ; CHECK-NEXT: %volt = fcmp olt float %a1, %a2 |
377 ; CHECK-NEXT: %vole = fcmp ole float %a1, %a2 | 377 ; CHECK-NEXT: %vole = fcmp ole float %a1, %a2 |
378 ; CHECK-NEXT: %vone = fcmp one float %a1, %a2 | 378 ; CHECK-NEXT: %vone = fcmp one float %a1, %a2 |
379 ; CHECK-NEXT: %ord = fcmp ord float %a1, %a2 | 379 ; CHECK-NEXT: %ord = fcmp ord float %a1, %a2 |
380 ; CHECK-NEXT: %vueq = fcmp ueq float %a1, %a2 | 380 ; CHECK-NEXT: %vueq = fcmp ueq float %a1, %a2 |
381 ; CHECK-NEXT: %vugt = fcmp ugt float %a1, %a2 | 381 ; CHECK-NEXT: %vugt = fcmp ugt float %a1, %a2 |
382 ; CHECK-NEXT: %vuge = fcmp uge float %a1, %a2 | 382 ; CHECK-NEXT: %vuge = fcmp uge float %a1, %a2 |
383 ; CHECK-NEXT: %vult = fcmp ult float %a1, %a2 | 383 ; CHECK-NEXT: %vult = fcmp ult float %a1, %a2 |
384 ; CHECK-NEXT: %vule = fcmp ule float %a1, %a2 | 384 ; CHECK-NEXT: %vule = fcmp ule float %a1, %a2 |
385 ; CHECK-NEXT: %vune = fcmp une float %a1, %a2 | 385 ; CHECK-NEXT: %vune = fcmp une float %a1, %a2 |
386 ; CHECK-NEXT: %vuno = fcmp uno float %a1, %a2 | 386 ; CHECK-NEXT: %vuno = fcmp uno float %a1, %a2 |
387 ; CHECK-NEXT: %vtrue = fcmp true float %a1, %a2 | 387 ; CHECK-NEXT: %vtrue = fcmp true float %a1, %a2 |
388 ; CHECK-NEXT: ret i1 %voeq | 388 ; CHECK-NEXT: ret void |
389 ; CHECK-NEXT: } | 389 ; CHECK-NEXT: } |
390 | 390 |
391 define internal i1 @FcmpDouble(double %a1, double %a2) { | 391 define internal void @FcmpDouble(double %a1, double %a2) { |
392 entry: | 392 entry: |
393 %vfalse = fcmp false double %a1, %a2 | 393 %vfalse = fcmp false double %a1, %a2 |
394 %voeq = fcmp oeq double %a1, %a2 | 394 %voeq = fcmp oeq double %a1, %a2 |
395 %vogt = fcmp ogt double %a1, %a2 | 395 %vogt = fcmp ogt double %a1, %a2 |
396 %voge = fcmp oge double %a1, %a2 | 396 %voge = fcmp oge double %a1, %a2 |
397 %volt = fcmp olt double %a1, %a2 | 397 %volt = fcmp olt double %a1, %a2 |
398 %vole = fcmp ole double %a1, %a2 | 398 %vole = fcmp ole double %a1, %a2 |
399 %vone = fcmp one double %a1, %a2 | 399 %vone = fcmp one double %a1, %a2 |
400 %ord = fcmp ord double %a1, %a2 | 400 %ord = fcmp ord double %a1, %a2 |
401 %vueq = fcmp ueq double %a1, %a2 | 401 %vueq = fcmp ueq double %a1, %a2 |
402 %vugt = fcmp ugt double %a1, %a2 | 402 %vugt = fcmp ugt double %a1, %a2 |
403 %vuge = fcmp uge double %a1, %a2 | 403 %vuge = fcmp uge double %a1, %a2 |
404 %vult = fcmp ult double %a1, %a2 | 404 %vult = fcmp ult double %a1, %a2 |
405 %vule = fcmp ule double %a1, %a2 | 405 %vule = fcmp ule double %a1, %a2 |
406 %vune = fcmp une double %a1, %a2 | 406 %vune = fcmp une double %a1, %a2 |
407 %vuno = fcmp uno double %a1, %a2 | 407 %vuno = fcmp uno double %a1, %a2 |
408 %vtrue = fcmp true double %a1, %a2 | 408 %vtrue = fcmp true double %a1, %a2 |
409 ret i1 %voeq | 409 ret void |
410 } | 410 } |
411 | 411 |
412 ; CHECK-NEXT: define internal i1 @FcmpDouble(double %a1, double %a2) { | 412 ; CHECK-NEXT: define internal void @FcmpDouble(double %a1, double %a2) { |
413 ; CHECK-NEXT: entry: | 413 ; CHECK-NEXT: entry: |
414 ; CHECK-NEXT: %vfalse = fcmp false double %a1, %a2 | 414 ; CHECK-NEXT: %vfalse = fcmp false double %a1, %a2 |
415 ; CHECK-NEXT: %voeq = fcmp oeq double %a1, %a2 | 415 ; CHECK-NEXT: %voeq = fcmp oeq double %a1, %a2 |
416 ; CHECK-NEXT: %vogt = fcmp ogt double %a1, %a2 | 416 ; CHECK-NEXT: %vogt = fcmp ogt double %a1, %a2 |
417 ; CHECK-NEXT: %voge = fcmp oge double %a1, %a2 | 417 ; CHECK-NEXT: %voge = fcmp oge double %a1, %a2 |
418 ; CHECK-NEXT: %volt = fcmp olt double %a1, %a2 | 418 ; CHECK-NEXT: %volt = fcmp olt double %a1, %a2 |
419 ; CHECK-NEXT: %vole = fcmp ole double %a1, %a2 | 419 ; CHECK-NEXT: %vole = fcmp ole double %a1, %a2 |
420 ; CHECK-NEXT: %vone = fcmp one double %a1, %a2 | 420 ; CHECK-NEXT: %vone = fcmp one double %a1, %a2 |
421 ; CHECK-NEXT: %ord = fcmp ord double %a1, %a2 | 421 ; CHECK-NEXT: %ord = fcmp ord double %a1, %a2 |
422 ; CHECK-NEXT: %vueq = fcmp ueq double %a1, %a2 | 422 ; CHECK-NEXT: %vueq = fcmp ueq double %a1, %a2 |
423 ; CHECK-NEXT: %vugt = fcmp ugt double %a1, %a2 | 423 ; CHECK-NEXT: %vugt = fcmp ugt double %a1, %a2 |
424 ; CHECK-NEXT: %vuge = fcmp uge double %a1, %a2 | 424 ; CHECK-NEXT: %vuge = fcmp uge double %a1, %a2 |
425 ; CHECK-NEXT: %vult = fcmp ult double %a1, %a2 | 425 ; CHECK-NEXT: %vult = fcmp ult double %a1, %a2 |
426 ; CHECK-NEXT: %vule = fcmp ule double %a1, %a2 | 426 ; CHECK-NEXT: %vule = fcmp ule double %a1, %a2 |
427 ; CHECK-NEXT: %vune = fcmp une double %a1, %a2 | 427 ; CHECK-NEXT: %vune = fcmp une double %a1, %a2 |
428 ; CHECK-NEXT: %vuno = fcmp uno double %a1, %a2 | 428 ; CHECK-NEXT: %vuno = fcmp uno double %a1, %a2 |
429 ; CHECK-NEXT: %vtrue = fcmp true double %a1, %a2 | 429 ; CHECK-NEXT: %vtrue = fcmp true double %a1, %a2 |
430 ; CHECK-NEXT: ret i1 %voeq | 430 ; CHECK-NEXT: ret void |
431 ; CHECK-NEXT: } | 431 ; CHECK-NEXT: } |
432 | 432 |
433 define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { | 433 define internal <4 x i1> @FcmpV4xFloat(<4 x float> %a1, <4 x float> %a2) { |
434 entry: | 434 entry: |
435 %vfalse = fcmp false <4 x float> %a1, %a2 | 435 %vfalse = fcmp false <4 x float> %a1, %a2 |
436 %voeq = fcmp oeq <4 x float> %a1, %a2 | 436 %voeq = fcmp oeq <4 x float> %a1, %a2 |
437 %vogt = fcmp ogt <4 x float> %a1, %a2 | 437 %vogt = fcmp ogt <4 x float> %a1, %a2 |
438 %voge = fcmp oge <4 x float> %a1, %a2 | 438 %voge = fcmp oge <4 x float> %a1, %a2 |
439 %volt = fcmp olt <4 x float> %a1, %a2 | 439 %volt = fcmp olt <4 x float> %a1, %a2 |
440 %vole = fcmp ole <4 x float> %a1, %a2 | 440 %vole = fcmp ole <4 x float> %a1, %a2 |
(...skipping 25 matching lines...) Expand all Loading... |
466 ; CHECK-NEXT: %vuge = fcmp uge <4 x float> %a1, %a2 | 466 ; CHECK-NEXT: %vuge = fcmp uge <4 x float> %a1, %a2 |
467 ; CHECK-NEXT: %vult = fcmp ult <4 x float> %a1, %a2 | 467 ; CHECK-NEXT: %vult = fcmp ult <4 x float> %a1, %a2 |
468 ; CHECK-NEXT: %vule = fcmp ule <4 x float> %a1, %a2 | 468 ; CHECK-NEXT: %vule = fcmp ule <4 x float> %a1, %a2 |
469 ; CHECK-NEXT: %vune = fcmp une <4 x float> %a1, %a2 | 469 ; CHECK-NEXT: %vune = fcmp une <4 x float> %a1, %a2 |
470 ; CHECK-NEXT: %vuno = fcmp uno <4 x float> %a1, %a2 | 470 ; CHECK-NEXT: %vuno = fcmp uno <4 x float> %a1, %a2 |
471 ; CHECK-NEXT: %vtrue = fcmp true <4 x float> %a1, %a2 | 471 ; CHECK-NEXT: %vtrue = fcmp true <4 x float> %a1, %a2 |
472 ; CHECK-NEXT: ret <4 x i1> %voeq | 472 ; CHECK-NEXT: ret <4 x i1> %voeq |
473 ; CHECK-NEXT: } | 473 ; CHECK-NEXT: } |
474 | 474 |
475 ; NOIR: Total across all functions | 475 ; NOIR: Total across all functions |
OLD | NEW |