diff options
author | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2013-09-04 15:15:20 +0000 |
---|---|---|
committer | Venkatraman Govindaraju <venkatra@cs.wisc.edu> | 2013-09-04 15:15:20 +0000 |
commit | bf34f346420dbcdb3f9376967bde701682471a79 (patch) | |
tree | a421b07dadfeb3fd221f7c10dace2013b61a11c3 | |
parent | 6947f10ec467eb89d606bc96450c35864e1b4f10 (diff) | |
download | llvm-bf34f346420dbcdb3f9376967bde701682471a79.tar.gz llvm-bf34f346420dbcdb3f9376967bde701682471a79.tar.bz2 llvm-bf34f346420dbcdb3f9376967bde701682471a79.tar.xz |
[Sparc] Fix an assertion failure while lowering fcmp on long double.
This assertion is triggered because an integer constant is created with wrong
type.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@189948 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/Sparc/SparcISelLowering.cpp | 2 | ||||
-rw-r--r-- | test/CodeGen/SPARC/fp128.ll | 20 |
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/Target/Sparc/SparcISelLowering.cpp b/lib/Target/Sparc/SparcISelLowering.cpp index 3250537d0b..e646521f60 100644 --- a/lib/Target/Sparc/SparcISelLowering.cpp +++ b/lib/Target/Sparc/SparcISelLowering.cpp @@ -1816,7 +1816,7 @@ SparcTargetLowering::LowerF128Compare(SDValue LHS, SDValue RHS, return DAG.getNode(SPISD::CMPICC, DL, MVT::Glue, Result, RHS); } case SPCC::FCC_ULE: { - SDValue RHS = DAG.getTargetConstant(2, LHS.getValueType()); + SDValue RHS = DAG.getTargetConstant(2, Result.getValueType()); SPCC = SPCC::ICC_NE; return DAG.getNode(SPISD::CMPICC, DL, MVT::Glue, Result, RHS); } diff --git a/test/CodeGen/SPARC/fp128.ll b/test/CodeGen/SPARC/fp128.ll index 31ce6059f6..153819974b 100644 --- a/test/CodeGen/SPARC/fp128.ll +++ b/test/CodeGen/SPARC/fp128.ll @@ -76,3 +76,23 @@ entry: %ret = select i1 %cond, i32 %a, i32 %b ret i32 %ret } + +; HARD-LABEL: f128_compare2 +; HARD: fcmpq +; HARD: fb{{ule|g}} + +; SOFT-LABEL: f128_compare2 +; SOFT: _Q_cmp +; SOFT: cmp + +define i32 @f128_compare2() { +entry: + %0 = fcmp ogt fp128 undef, 0xL00000000000000000000000000000000 + br i1 %0, label %"5", label %"7" + +"5": ; preds = %entry + ret i32 0 + +"7": ; preds = %entry + ret i32 1 +} |