1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 19:12:56 +02:00

[AArch64] Fix memset ICE when memset value is f128.

llvm-svn: 211960
This commit is contained in:
Chad Rosier 2014-06-27 21:05:09 +00:00
parent e30ccae2b9
commit 98a58b0e56
2 changed files with 20 additions and 1 deletions

View File

@ -3631,7 +3631,7 @@ static SDValue getMemsetStringVal(EVT VT, SDLoc dl, SelectionDAG &DAG,
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();

View File

@ -0,0 +1,19 @@
; RUN: llc < %s -march=aarch64 -mtriple=aarch64-linux-gnu | FileCheck %s
%structA = type { i128 }
@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)