Skip to content

Commit 5235973

Browse files
author
Chad Rosier
committed
[AArch64] Fix memset ICE when memset value is f128.
llvm-svn: 211960
1 parent 035fcf7 commit 5235973

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3631,7 +3631,7 @@ static SDValue getMemsetStringVal(EVT VT, SDLoc dl, SelectionDAG &DAG,
36313631
if (Str.empty()) {
36323632
if (VT.isInteger())
36333633
return DAG.getConstant(0, VT);
3634-
else if (VT == MVT::f32 || VT == MVT::f64)
3634+
else if (VT == MVT::f32 || VT == MVT::f64 || VT == MVT::f128)
36353635
return DAG.getConstantFP(0.0, VT);
36363636
else if (VT.isVector()) {
36373637
unsigned NumElts = VT.getVectorNumElements();
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
; RUN: llc < %s -march=aarch64 -mtriple=aarch64-linux-gnu | FileCheck %s
2+
3+
%structA = type { i128 }
4+
@stubA = internal unnamed_addr constant %structA zeroinitializer, align 8
5+
6+
; Make sure we don't hit llvm_unreachable.
7+
8+
define void @test1() {
9+
; CHECK-LABEL: @test1
10+
; CHECK: adrp
11+
; CHECK: ldr q0
12+
; CHECK: str q0
13+
; CHECK: ret
14+
entry:
15+
tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* undef, i8* bitcast (%structA* @stubA to i8*), i64 48, i32 8, i1 false)
16+
ret void
17+
}
18+
19+
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture readonly, i64, i32, i1)

0 commit comments

Comments
 (0)