[llvm] r211960 - [AArch64] Fix memset ICE when memset value is f128.

Chad Rosier mcrosier at codeaurora.org
Fri Jun 27 14:05:09 PDT 2014


Author: mcrosier
Date: Fri Jun 27 16:05:09 2014
New Revision: 211960

URL: http://llvm.org/viewvc/llvm-project?rev=211960&view=rev
Log:
[AArch64] Fix memset ICE when memset value is f128.

Added:
    llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll
Modified:
    llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Modified: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp?rev=211960&r1=211959&r2=211960&view=diff
==============================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp (original)
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp Fri Jun 27 16:05:09 2014
@@ -3631,7 +3631,7 @@ static SDValue getMemsetStringVal(EVT VT
   if (Str.empty()) {
     if (VT.isInteger())
       return DAG.getConstant(0, VT);
-    else if (VT == MVT::f32 || VT == MVT::f64)
+    else if (VT == MVT::f32 || VT == MVT::f64 || VT == MVT::f128)
       return DAG.getConstantFP(0.0, VT);
     else if (VT.isVector()) {
       unsigned NumElts = VT.getVectorNumElements();

Added: llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll?rev=211960&view=auto
==============================================================================
--- llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll (added)
+++ llvm/trunk/test/CodeGen/AArch64/memcpy-f128.ll Fri Jun 27 16:05:09 2014
@@ -0,0 +1,19 @@
+; RUN: llc < %s -march=aarch64 -mtriple=aarch64-linux-gnu | FileCheck %s
+
+%structA = type { i128 }
+ at stubA = internal unnamed_addr constant %structA zeroinitializer, align 8
+
+; Make sure we don't hit llvm_unreachable.
+
+define void @test1() {
+; CHECK-LABEL: @test1
+; CHECK: adrp
+; CHECK: ldr q0
+; CHECK: str q0
+; CHECK: ret
+entry:
+  tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* undef, i8* bitcast (%structA* @stubA to i8*), i64 48, i32 8, i1 false)
+  ret void
+}
+
+declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1)





More information about the llvm-commits mailing list