Akira Hatanaka | 1bda786 | 2012-07-16 23:56:51 +0000 | [diff] [blame] | 1 | ; RUN: llc -march=mipsel < %s |
Andrew Trick | 81349a7 | 2013-05-25 03:26:51 +0000 | [diff] [blame] | 2 | ; RUN: llc -march=mipsel -pre-RA-sched=source < %s | FileCheck %s --check-prefix=SOURCE-SCHED |
Akira Hatanaka | 3fef29d | 2012-07-11 19:32:27 +0000 | [diff] [blame] | 3 | |
Akira Hatanaka | 1bda786 | 2012-07-16 23:56:51 +0000 | [diff] [blame] | 4 | @gf0 = external global float |
| 5 | @gf1 = external global float |
Akira Hatanaka | 3fef29d | 2012-07-11 19:32:27 +0000 | [diff] [blame] | 6 | @gd0 = external global double |
| 7 | @gd1 = external global double |
| 8 | |
Akira Hatanaka | 1bda786 | 2012-07-16 23:56:51 +0000 | [diff] [blame] | 9 | define float @select_cc_f32(float %a, float %b) nounwind { |
Akira Hatanaka | 3fef29d | 2012-07-11 19:32:27 +0000 | [diff] [blame] | 10 | entry: |
Andrew Trick | 81349a7 | 2013-05-25 03:26:51 +0000 | [diff] [blame] | 11 | ; SOURCE-SCHED: lui |
| 12 | ; SOURCE-SCHED: addiu |
| 13 | ; SOURCE-SCHED: addu |
| 14 | ; SOURCE-SCHED: lw |
| 15 | ; SOURCE-SCHED: sw |
| 16 | ; SOURCE-SCHED: lw |
| 17 | ; SOURCE-SCHED: lui |
| 18 | ; SOURCE-SCHED: sw |
| 19 | ; SOURCE-SCHED: addiu |
| 20 | ; SOURCE-SCHED: addiu |
| 21 | ; SOURCE-SCHED: c.olt.s |
| 22 | ; SOURCE-SCHED: movt |
| 23 | ; SOURCE-SCHED: mtc1 |
| 24 | ; SOURCE-SCHED: jr |
| 25 | |
Akira Hatanaka | 1bda786 | 2012-07-16 23:56:51 +0000 | [diff] [blame] | 26 | store float 0.000000e+00, float* @gf0, align 4 |
| 27 | store float 1.000000e+00, float* @gf1, align 4 |
Akira Hatanaka | 3fef29d | 2012-07-11 19:32:27 +0000 | [diff] [blame] | 28 | %cmp = fcmp olt float %a, %b |
| 29 | %conv = zext i1 %cmp to i32 |
Akira Hatanaka | 1bda786 | 2012-07-16 23:56:51 +0000 | [diff] [blame] | 30 | %conv1 = sitofp i32 %conv to float |
| 31 | ret float %conv1 |
Akira Hatanaka | 3fef29d | 2012-07-11 19:32:27 +0000 | [diff] [blame] | 32 | } |
| 33 | |
| 34 | define double @select_cc_f64(double %a, double %b) nounwind { |
| 35 | entry: |
| 36 | store double 0.000000e+00, double* @gd0, align 8 |
| 37 | store double 1.000000e+00, double* @gd1, align 8 |
| 38 | %cmp = fcmp olt double %a, %b |
| 39 | %conv = zext i1 %cmp to i32 |
| 40 | %conv1 = sitofp i32 %conv to double |
| 41 | ret double %conv1 |
| 42 | } |
| 43 | |