OLD | NEW |
1 ; This tries to be a comprehensive test of f32 and f64 operations. | 1 ; This tries to be a comprehensive test of f32 and f64 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 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 | 9 @__init_array_start = internal constant [0 x i8] zeroinitializer, align 4 |
10 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 | 10 @__fini_array_start = internal constant [0 x i8] zeroinitializer, align 4 |
(...skipping 1085 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1096 %cmp = fcmp true double %a, %b | 1096 %cmp = fcmp true double %a, %b |
1097 %cmp.ret_ext = zext i1 %cmp to i32 | 1097 %cmp.ret_ext = zext i1 %cmp to i32 |
1098 ret i32 %cmp.ret_ext | 1098 ret i32 %cmp.ret_ext |
1099 } | 1099 } |
1100 ; CHECK-LABEL: fcmpTrueDouble | 1100 ; CHECK-LABEL: fcmpTrueDouble |
1101 ; CHECK: mov {{.*}},0x1 | 1101 ; CHECK: mov {{.*}},0x1 |
1102 | 1102 |
1103 define internal float @loadFloat(i32 %a) { | 1103 define internal float @loadFloat(i32 %a) { |
1104 entry: | 1104 entry: |
1105 %__1 = inttoptr i32 %a to float* | 1105 %__1 = inttoptr i32 %a to float* |
1106 %v0 = load float* %__1, align 4 | 1106 %v0 = load float, float* %__1, align 4 |
1107 ret float %v0 | 1107 ret float %v0 |
1108 } | 1108 } |
1109 ; CHECK-LABEL: loadFloat | 1109 ; CHECK-LABEL: loadFloat |
1110 ; CHECK: movss | 1110 ; CHECK: movss |
1111 ; CHECK: fld | 1111 ; CHECK: fld |
1112 | 1112 |
1113 define internal double @loadDouble(i32 %a) { | 1113 define internal double @loadDouble(i32 %a) { |
1114 entry: | 1114 entry: |
1115 %__1 = inttoptr i32 %a to double* | 1115 %__1 = inttoptr i32 %a to double* |
1116 %v0 = load double* %__1, align 8 | 1116 %v0 = load double, double* %__1, align 8 |
1117 ret double %v0 | 1117 ret double %v0 |
1118 } | 1118 } |
1119 ; CHECK-LABEL: loadDouble | 1119 ; CHECK-LABEL: loadDouble |
1120 ; CHECK: movsd | 1120 ; CHECK: movsd |
1121 ; CHECK: fld | 1121 ; CHECK: fld |
1122 | 1122 |
1123 define internal void @storeFloat(i32 %a, float %value) { | 1123 define internal void @storeFloat(i32 %a, float %value) { |
1124 entry: | 1124 entry: |
1125 %__2 = inttoptr i32 %a to float* | 1125 %__2 = inttoptr i32 %a to float* |
1126 store float %value, float* %__2, align 4 | 1126 store float %value, float* %__2, align 4 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1174 define internal double @selectDoubleVarVar(double %a, double %b) { | 1174 define internal double @selectDoubleVarVar(double %a, double %b) { |
1175 entry: | 1175 entry: |
1176 %cmp = fcmp olt double %a, %b | 1176 %cmp = fcmp olt double %a, %b |
1177 %cond = select i1 %cmp, double %a, double %b | 1177 %cond = select i1 %cmp, double %a, double %b |
1178 ret double %cond | 1178 ret double %cond |
1179 } | 1179 } |
1180 ; CHECK-LABEL: selectDoubleVarVar | 1180 ; CHECK-LABEL: selectDoubleVarVar |
1181 ; CHECK: ucomisd | 1181 ; CHECK: ucomisd |
1182 ; CHECK: seta | 1182 ; CHECK: seta |
1183 ; CHECK: fld | 1183 ; CHECK: fld |
OLD | NEW |