| 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=target_ARM32 --command %p2i --filetype=obj --disassemble \ | 9 ; RUN: %if --need=target_ARM32 --command %p2i --filetype=obj --disassemble \ |
| 10 ; RUN: --target arm32 -i %s --args -O2 \ | 10 ; RUN: --target arm32 -i %s --args -O2 \ |
| (...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 372 entry: | 372 entry: |
| 373 %cmp = fcmp false float %a, %b | 373 %cmp = fcmp false float %a, %b |
| 374 %cmp.ret_ext = zext i1 %cmp to i32 | 374 %cmp.ret_ext = zext i1 %cmp to i32 |
| 375 ret i32 %cmp.ret_ext | 375 ret i32 %cmp.ret_ext |
| 376 } | 376 } |
| 377 ; CHECK-LABEL: fcmpFalseFloat | 377 ; CHECK-LABEL: fcmpFalseFloat |
| 378 ; CHECK: mov {{.*}},0x0 | 378 ; CHECK: mov {{.*}},0x0 |
| 379 ; ARM32-LABEL: fcmpFalseFloat | 379 ; ARM32-LABEL: fcmpFalseFloat |
| 380 ; ARM32: mov [[R:r[0-9]+]], #0 | 380 ; ARM32: mov [[R:r[0-9]+]], #0 |
| 381 ; MIPS32-LABEL: fcmpFalseFloat | 381 ; MIPS32-LABEL: fcmpFalseFloat |
| 382 ; MIPS32: addiu | 382 ; MIPS32: addiu [[R:.*]], $zero, 0 |
| 383 ; MIPS32: sb | 383 ; MIPS32: andi [[R]], [[R]], 1 |
| 384 | 384 |
| 385 define internal i32 @fcmpFalseDouble(double %a, double %b) { | 385 define internal i32 @fcmpFalseDouble(double %a, double %b) { |
| 386 entry: | 386 entry: |
| 387 %cmp = fcmp false double %a, %b | 387 %cmp = fcmp false double %a, %b |
| 388 %cmp.ret_ext = zext i1 %cmp to i32 | 388 %cmp.ret_ext = zext i1 %cmp to i32 |
| 389 ret i32 %cmp.ret_ext | 389 ret i32 %cmp.ret_ext |
| 390 } | 390 } |
| 391 ; CHECK-LABEL: fcmpFalseDouble | 391 ; CHECK-LABEL: fcmpFalseDouble |
| 392 ; CHECK: mov {{.*}},0x0 | 392 ; CHECK: mov {{.*}},0x0 |
| 393 ; ARM32-LABEL: fcmpFalseDouble | 393 ; ARM32-LABEL: fcmpFalseDouble |
| 394 ; ARM32: mov [[R:r[0-9]+]], #0 | 394 ; ARM32: mov [[R:r[0-9]+]], #0 |
| 395 ; MIPS32-LABEL: fcmpFalseDouble | 395 ; MIPS32-LABEL: fcmpFalseDouble |
| 396 ; MIPS32: addiu | 396 ; MIPS32: addiu [[R:.*]], $zero, 0 |
| 397 ; MIPS32: sb | 397 ; MIPS32: andi [[R]], [[R]], 1 |
| 398 | 398 |
| 399 define internal i32 @fcmpOeqFloat(float %a, float %b) { | 399 define internal i32 @fcmpOeqFloat(float %a, float %b) { |
| 400 entry: | 400 entry: |
| 401 %cmp = fcmp oeq float %a, %b | 401 %cmp = fcmp oeq float %a, %b |
| 402 %cmp.ret_ext = zext i1 %cmp to i32 | 402 %cmp.ret_ext = zext i1 %cmp to i32 |
| 403 ret i32 %cmp.ret_ext | 403 ret i32 %cmp.ret_ext |
| 404 } | 404 } |
| 405 ; CHECK-LABEL: fcmpOeqFloat | 405 ; CHECK-LABEL: fcmpOeqFloat |
| 406 ; CHECK: ucomiss | 406 ; CHECK: ucomiss |
| 407 ; CHECK: jne | 407 ; CHECK: jne |
| (...skipping 560 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 entry: | 968 entry: |
| 969 %cmp = fcmp true float %a, %b | 969 %cmp = fcmp true float %a, %b |
| 970 %cmp.ret_ext = zext i1 %cmp to i32 | 970 %cmp.ret_ext = zext i1 %cmp to i32 |
| 971 ret i32 %cmp.ret_ext | 971 ret i32 %cmp.ret_ext |
| 972 } | 972 } |
| 973 ; CHECK-LABEL: fcmpTrueFloat | 973 ; CHECK-LABEL: fcmpTrueFloat |
| 974 ; CHECK: mov {{.*}},0x1 | 974 ; CHECK: mov {{.*}},0x1 |
| 975 ; ARM32-LABEL: fcmpTrueFloat | 975 ; ARM32-LABEL: fcmpTrueFloat |
| 976 ; ARM32: mov {{r[0-9]+}}, #1 | 976 ; ARM32: mov {{r[0-9]+}}, #1 |
| 977 ; MIPS32-LABEL: fcmpTrueFloat | 977 ; MIPS32-LABEL: fcmpTrueFloat |
| 978 ; MIPS32: addiu | 978 ; MIPS32: addiu [[R:.*]], $zero, 1 |
| 979 ; MIPS32: sb | 979 ; MIPS32: andi [[R]], [[R]], 1 |
| 980 | 980 |
| 981 define internal i32 @fcmpTrueDouble(double %a, double %b) { | 981 define internal i32 @fcmpTrueDouble(double %a, double %b) { |
| 982 entry: | 982 entry: |
| 983 %cmp = fcmp true double %a, %b | 983 %cmp = fcmp true double %a, %b |
| 984 %cmp.ret_ext = zext i1 %cmp to i32 | 984 %cmp.ret_ext = zext i1 %cmp to i32 |
| 985 ret i32 %cmp.ret_ext | 985 ret i32 %cmp.ret_ext |
| 986 } | 986 } |
| 987 ; CHECK-LABEL: fcmpTrueDouble | 987 ; CHECK-LABEL: fcmpTrueDouble |
| 988 ; CHECK: mov {{.*}},0x1 | 988 ; CHECK: mov {{.*}},0x1 |
| 989 ; ARM32-LABEL: fcmpTrueDouble | 989 ; ARM32-LABEL: fcmpTrueDouble |
| 990 ; ARM32: mov {{r[0-9]+}}, #1 | 990 ; ARM32: mov {{r[0-9]+}}, #1 |
| 991 ; MIPS32-LABEL: fcmpTrueDouble | 991 ; MIPS32-LABEL: fcmpTrueDouble |
| 992 ; MIPS32: addiu | 992 ; MIPS32: addiu [[R:.*]], $zero, 1 |
| 993 ; MIPS32: sb | 993 ; MIPS32: andi [[R]], [[R]], 1 |
| 994 | 994 |
| 995 define internal float @selectFloatVarVar(float %a, float %b) { | 995 define internal float @selectFloatVarVar(float %a, float %b) { |
| 996 entry: | 996 entry: |
| 997 %cmp = fcmp olt float %a, %b | 997 %cmp = fcmp olt float %a, %b |
| 998 %cond = select i1 %cmp, float %a, float %b | 998 %cond = select i1 %cmp, float %a, float %b |
| 999 ret float %cond | 999 ret float %cond |
| 1000 } | 1000 } |
| 1001 ; CHECK-LABEL: selectFloatVarVar | 1001 ; CHECK-LABEL: selectFloatVarVar |
| 1002 ; CHECK: movss | 1002 ; CHECK: movss |
| 1003 ; CHECK: ucomiss | 1003 ; CHECK: ucomiss |
| (...skipping 18 matching lines...) Expand all Loading... |
| 1022 ; CHECK: ucomisd | 1022 ; CHECK: ucomisd |
| 1023 ; CHECK: ja | 1023 ; CHECK: ja |
| 1024 ; CHECK: movsd | 1024 ; CHECK: movsd |
| 1025 ; ARM32-LABEL: selectDoubleVarVar | 1025 ; ARM32-LABEL: selectDoubleVarVar |
| 1026 ; ARM32: vcmp.f64 | 1026 ; ARM32: vcmp.f64 |
| 1027 ; ARM32-OM1: vmovne.f64 d{{[0-9]+}} | 1027 ; ARM32-OM1: vmovne.f64 d{{[0-9]+}} |
| 1028 ; ARM32-O2: vmovmi.f64 d{{[0-9]+}} | 1028 ; ARM32-O2: vmovmi.f64 d{{[0-9]+}} |
| 1029 ; ARM32: bx | 1029 ; ARM32: bx |
| 1030 ; MIPS32-LABEL: selectDoubleVarVar | 1030 ; MIPS32-LABEL: selectDoubleVarVar |
| 1031 ; MIPS32: movn.d {{.*}} | 1031 ; MIPS32: movn.d {{.*}} |
| OLD | NEW |