| OLD | NEW |
| 1 ; This tries to be a comprehensive test of f32 and f64 compare operations. | 1 ; This tries to be a comprehensive test of f32 and f64 compare operations. |
| 2 | 2 |
| 3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ | 3 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 \ |
| 4 ; RUN: -allow-externally-defined-symbols | FileCheck %s | 4 ; RUN: -allow-externally-defined-symbols | FileCheck %s |
| 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ | 5 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 \ |
| 6 ; RUN: -allow-externally-defined-symbols | FileCheck %s \ | 6 ; RUN: -allow-externally-defined-symbols | FileCheck %s \ |
| 7 ; RUN: --check-prefix=CHECK-OM1 | 7 ; RUN: --check-prefix=CHECK-OM1 |
| 8 | 8 |
| 9 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \ | 9 ; RUN: %if --need=allow_dump --need=target_ARM32 --command %p2i --filetype=asm \ |
| 10 ; RUN: --target arm32 -i %s --args -O2 \ | 10 ; RUN: --target arm32 -i %s --args -O2 \ |
| (...skipping 797 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 808 ; ARM32-LABEL: fcmpTrueDouble | 808 ; ARM32-LABEL: fcmpTrueDouble |
| 809 ; ARM32: mov {{r[0-9]+}}, #1 | 809 ; ARM32: mov {{r[0-9]+}}, #1 |
| 810 | 810 |
| 811 define internal float @selectFloatVarVar(float %a, float %b) { | 811 define internal float @selectFloatVarVar(float %a, float %b) { |
| 812 entry: | 812 entry: |
| 813 %cmp = fcmp olt float %a, %b | 813 %cmp = fcmp olt float %a, %b |
| 814 %cond = select i1 %cmp, float %a, float %b | 814 %cond = select i1 %cmp, float %a, float %b |
| 815 ret float %cond | 815 ret float %cond |
| 816 } | 816 } |
| 817 ; CHECK-LABEL: selectFloatVarVar | 817 ; CHECK-LABEL: selectFloatVarVar |
| 818 ; CHECK: movss |
| 818 ; CHECK: ucomiss | 819 ; CHECK: ucomiss |
| 819 ; CHECK: seta | 820 ; CHECK: ja |
| 820 ; CHECK: fld | 821 ; CHECK: movss |
| 821 ; ARM32-LABEL: selectFloatVarVar | 822 ; ARM32-LABEL: selectFloatVarVar |
| 822 ; ARM32: vcmp.f32 | 823 ; ARM32: vcmp.f32 |
| 823 ; ARM32-OM1: vmovne.f32 s{{[0-9]+}} | 824 ; ARM32-OM1: vmovne.f32 s{{[0-9]+}} |
| 824 ; ARM32-O2: vmovmi.f32 s{{[0-9]+}} | 825 ; ARM32-O2: vmovmi.f32 s{{[0-9]+}} |
| 825 ; ARM32: bx | 826 ; ARM32: bx |
| 826 | 827 |
| 827 define internal double @selectDoubleVarVar(double %a, double %b) { | 828 define internal double @selectDoubleVarVar(double %a, double %b) { |
| 828 entry: | 829 entry: |
| 829 %cmp = fcmp olt double %a, %b | 830 %cmp = fcmp olt double %a, %b |
| 830 %cond = select i1 %cmp, double %a, double %b | 831 %cond = select i1 %cmp, double %a, double %b |
| 831 ret double %cond | 832 ret double %cond |
| 832 } | 833 } |
| 833 ; CHECK-LABEL: selectDoubleVarVar | 834 ; CHECK-LABEL: selectDoubleVarVar |
| 835 ; CHECK: movsd |
| 834 ; CHECK: ucomisd | 836 ; CHECK: ucomisd |
| 835 ; CHECK: seta | 837 ; CHECK: ja |
| 836 ; CHECK: fld | 838 ; CHECK: movsd |
| 837 ; ARM32-LABEL: selectDoubleVarVar | 839 ; ARM32-LABEL: selectDoubleVarVar |
| 838 ; ARM32: vcmp.f64 | 840 ; ARM32: vcmp.f64 |
| 839 ; ARM32-OM1: vmovne.f64 d{{[0-9]+}} | 841 ; ARM32-OM1: vmovne.f64 d{{[0-9]+}} |
| 840 ; ARM32-O2: vmovmi.f64 d{{[0-9]+}} | 842 ; ARM32-O2: vmovmi.f64 d{{[0-9]+}} |
| 841 ; ARM32: bx | 843 ; ARM32: bx |
| OLD | NEW |