Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 1 | ; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse1,+sse2 | \ |
Dan Gohman | f9dd170 | 2007-08-15 13:36:28 +0000 | [diff] [blame] | 2 | ; RUN: grep mins | count 3 |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 3 | ; RUN: llvm-as < %s | llc -march=x86 -mattr=+sse1,+sse2 | \ |
Dan Gohman | f9dd170 | 2007-08-15 13:36:28 +0000 | [diff] [blame] | 4 | ; RUN: grep maxs | count 2 |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 5 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 6 | declare i1 @llvm.isunordered.f64(double, double) |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 7 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 8 | declare i1 @llvm.isunordered.f32(float, float) |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 9 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 10 | define float @min1(float %x, float %y) { |
| 11 | %tmp = fcmp olt float %x, %y ; <i1> [#uses=1] |
| 12 | %retval = select i1 %tmp, float %x, float %y ; <float> [#uses=1] |
| 13 | ret float %retval |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 14 | } |
| 15 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 16 | define double @min2(double %x, double %y) { |
| 17 | %tmp = fcmp olt double %x, %y ; <i1> [#uses=1] |
| 18 | %retval = select i1 %tmp, double %x, double %y ; <double> [#uses=1] |
| 19 | ret double %retval |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 20 | } |
| 21 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 22 | define float @max1(float %x, float %y) { |
| 23 | %tmp = fcmp oge float %x, %y ; <i1> [#uses=1] |
| 24 | %tmp2 = fcmp uno float %x, %y ; <i1> [#uses=1] |
| 25 | %tmp3 = or i1 %tmp2, %tmp ; <i1> [#uses=1] |
| 26 | %retval = select i1 %tmp3, float %x, float %y ; <float> [#uses=1] |
| 27 | ret float %retval |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 28 | } |
| 29 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 30 | define double @max2(double %x, double %y) { |
| 31 | %tmp = fcmp oge double %x, %y ; <i1> [#uses=1] |
| 32 | %tmp2 = fcmp uno double %x, %y ; <i1> [#uses=1] |
| 33 | %tmp3 = or i1 %tmp2, %tmp ; <i1> [#uses=1] |
| 34 | %retval = select i1 %tmp3, double %x, double %y ; <double> [#uses=1] |
| 35 | ret double %retval |
| 36 | } |
| 37 | |
| 38 | define <4 x float> @min3(float %tmp37) { |
| 39 | %tmp375 = insertelement <4 x float> undef, float %tmp37, i32 0 ; <<4 x float>> [#uses=1] |
| 40 | %tmp48 = tail call <4 x float> @llvm.x86.sse.min.ss( <4 x float> %tmp375, <4 x float> < float 6.553500e+04, float undef, float undef, float undef > ) ; <<4 x float>> [#uses=1] |
Evan Cheng | e415f19 | 2006-10-12 01:42:03 +0000 | [diff] [blame] | 41 | ret <4 x float> %tmp48 |
| 42 | } |
Chris Lattner | 1e21d3a | 2006-10-04 06:56:02 +0000 | [diff] [blame] | 43 | |
Tanya Lattner | 3cdf542 | 2008-02-21 07:42:26 +0000 | [diff] [blame^] | 44 | declare <4 x float> @llvm.x86.sse.min.ss(<4 x float>, <4 x float>) |