| 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 ; The CHECK lines are only checking for basic instruction patterns | 2 ; The CHECK lines are only checking for basic instruction patterns |
| 3 ; that should be present regardless of the optimization level, so | 3 ; that should be present regardless of the optimization level, so |
| 4 ; there are no special OPTM1 match lines. | 4 ; there are no special OPTM1 match lines. |
| 5 | 5 |
| 6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s | 6 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -O2 | FileCheck %s |
| 7 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s | 7 ; RUN: %p2i --filetype=obj --disassemble -i %s --args -Om1 | FileCheck %s |
| 8 | 8 |
| 9 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ | 9 ; RUN: %if --need=target_MIPS32 --need=allow_dump \ |
| 10 ; RUN: --command %p2i --filetype=asm --assemble \ | 10 ; RUN: --command %p2i --filetype=asm --assemble \ |
| (...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 70 entry: | 70 entry: |
| 71 %__2 = inttoptr i32 %a to double* | 71 %__2 = inttoptr i32 %a to double* |
| 72 store double %value, double* %__2, align 8 | 72 store double %value, double* %__2, align 8 |
| 73 ret void | 73 ret void |
| 74 } | 74 } |
| 75 ; CHECK-LABEL: storeDouble | 75 ; CHECK-LABEL: storeDouble |
| 76 ; CHECK: movsd | 76 ; CHECK: movsd |
| 77 ; CHECK: movsd | 77 ; CHECK: movsd |
| 78 | 78 |
| 79 ; MIPS32-LABEL: storeDouble | 79 ; MIPS32-LABEL: storeDouble |
| 80 ; MIPS32: ldc1 $f{{.*}},4{{.*}} | |
| 81 ; MIPS32: sdc1 $f{{.*}},0{{.*}} | 80 ; MIPS32: sdc1 $f{{.*}},0{{.*}} |
| 82 ; MIPS32O2-LABEL: storeDouble | 81 ; MIPS32O2-LABEL: storeDouble |
| 82 ; MIPS32O2: mtc1 a2,$f{{.*}} |
| 83 ; MIPS32O2: mtc1 a3,$f{{.*}} | 83 ; MIPS32O2: mtc1 a3,$f{{.*}} |
| 84 ; MIPS32O2: mtc1 a2,$f{{.*}} | |
| 85 ; MIPS32O2: sdc1 $f{{.*}},0(a0) | 84 ; MIPS32O2: sdc1 $f{{.*}},0(a0) |
| 86 | 85 |
| 87 define internal void @storeFloatConst(i32 %a) { | 86 define internal void @storeFloatConst(i32 %a) { |
| 88 entry: | 87 entry: |
| 89 %a.asptr = inttoptr i32 %a to float* | 88 %a.asptr = inttoptr i32 %a to float* |
| 90 store float 0x3FF3AE1480000000, float* %a.asptr, align 4 | 89 store float 0x3FF3AE1480000000, float* %a.asptr, align 4 |
| 91 ret void | 90 ret void |
| 92 } | 91 } |
| 93 ; CHECK-LABEL: storeFloatConst | 92 ; CHECK-LABEL: storeFloatConst |
| 94 ; CHECK: movss | 93 ; CHECK: movss |
| (...skipping 19 matching lines...) Expand all Loading... |
| 114 ; CHECK: movsd | 113 ; CHECK: movsd |
| 115 | 114 |
| 116 ; MIPS32-LABEL: storeDoubleConst | 115 ; MIPS32-LABEL: storeDoubleConst |
| 117 ; MIPS32: lui {{.*}},{{.*}} | 116 ; MIPS32: lui {{.*}},{{.*}} |
| 118 ; MIPS32: ldc1 $f{{.*}},{{.*}} | 117 ; MIPS32: ldc1 $f{{.*}},{{.*}} |
| 119 ; MIPS32: sdc1 $f{{.*}},0{{.*}} | 118 ; MIPS32: sdc1 $f{{.*}},0{{.*}} |
| 120 ; MIPS32O2-LABEL: storeDoubleConst | 119 ; MIPS32O2-LABEL: storeDoubleConst |
| 121 ; MIPS32O2: lui {{.*}},{{.*}} | 120 ; MIPS32O2: lui {{.*}},{{.*}} |
| 122 ; MIPS32O2: ldc1 $f{{.*}},{{.*}} | 121 ; MIPS32O2: ldc1 $f{{.*}},{{.*}} |
| 123 ; MIPS32O2: sdc1 $f{{.*}},0{{.*}} | 122 ; MIPS32O2: sdc1 $f{{.*}},0{{.*}} |
| OLD | NEW |