Skip to content

Commit 41e4883

Browse files
committed
[Thumb2] Upgrade intrinsic upgrading code
Enabling opaque pointers has changed the mangled names of these two ARM intrinsics: `arm.mve.vldr.gather.offset.predicated.v2i64.p0i64.v2i64.v4i1` `arm.mve.vstr.scatter.offset.predicated.p0i64.v2i64.v2i64.v4i1` They are now spelled as: `arm.mve.vldr.gather.offset.predicated.v2i64.p0.v2i64.v4i1` `arm.mve.vstr.scatter.offset.predicated.p0.v2i64.v2i64.v4i1` Upgrade intrinsic upgrading code to account for the change in names. Differential Revision: https://reviews.llvm.org/D142900
1 parent d708a18 commit 41e4883

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

llvm/lib/IR/AutoUpgrade.cpp

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -802,10 +802,14 @@ static bool UpgradeIntrinsicFunction1(Function *F, Function *&NewFn) {
802802
Name == "arm.mve.vqdmull.predicated.v2i64.v4i32.v4i1" ||
803803
Name == "arm.mve.vldr.gather.base.predicated.v2i64.v2i64.v4i1" ||
804804
Name == "arm.mve.vldr.gather.base.wb.predicated.v2i64.v2i64.v4i1" ||
805-
Name == "arm.mve.vldr.gather.offset.predicated.v2i64.p0i64.v2i64.v4i1" ||
805+
Name ==
806+
"arm.mve.vldr.gather.offset.predicated.v2i64.p0i64.v2i64.v4i1" ||
807+
Name == "arm.mve.vldr.gather.offset.predicated.v2i64.p0.v2i64.v4i1" ||
806808
Name == "arm.mve.vstr.scatter.base.predicated.v2i64.v2i64.v4i1" ||
807809
Name == "arm.mve.vstr.scatter.base.wb.predicated.v2i64.v2i64.v4i1" ||
808-
Name == "arm.mve.vstr.scatter.offset.predicated.p0i64.v2i64.v2i64.v4i1" ||
810+
Name ==
811+
"arm.mve.vstr.scatter.offset.predicated.p0i64.v2i64.v2i64.v4i1" ||
812+
Name == "arm.mve.vstr.scatter.offset.predicated.p0.v2i64.v2i64.v4i1" ||
809813
Name == "arm.cde.vcx1q.predicated.v2i64.v4i1" ||
810814
Name == "arm.cde.vcx1qa.predicated.v2i64.v4i1" ||
811815
Name == "arm.cde.vcx2q.predicated.v2i64.v4i1" ||
@@ -1994,10 +1998,14 @@ static Value *UpgradeARMIntrinsicCall(StringRef Name, CallBase *CI, Function *F,
19941998
Name == "mve.vqdmull.predicated.v2i64.v4i32.v4i1" ||
19951999
Name == "mve.vldr.gather.base.predicated.v2i64.v2i64.v4i1" ||
19962000
Name == "mve.vldr.gather.base.wb.predicated.v2i64.v2i64.v4i1" ||
1997-
Name == "mve.vldr.gather.offset.predicated.v2i64.p0i64.v2i64.v4i1" ||
2001+
Name ==
2002+
"mve.vldr.gather.offset.predicated.v2i64.p0i64.v2i64.v4i1" ||
2003+
Name == "mve.vldr.gather.offset.predicated.v2i64.p0.v2i64.v4i1" ||
19982004
Name == "mve.vstr.scatter.base.predicated.v2i64.v2i64.v4i1" ||
19992005
Name == "mve.vstr.scatter.base.wb.predicated.v2i64.v2i64.v4i1" ||
2000-
Name == "mve.vstr.scatter.offset.predicated.p0i64.v2i64.v2i64.v4i1" ||
2006+
Name ==
2007+
"mve.vstr.scatter.offset.predicated.p0i64.v2i64.v2i64.v4i1" ||
2008+
Name == "mve.vstr.scatter.offset.predicated.p0.v2i64.v2i64.v4i1" ||
20012009
Name == "cde.vcx1q.predicated.v2i64.v4i1" ||
20022010
Name == "cde.vcx1qa.predicated.v2i64.v4i1" ||
20032011
Name == "cde.vcx2q.predicated.v2i64.v4i1" ||

llvm/test/CodeGen/Thumb2/mve-intrinsics/v2i1-upgrade.ll

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -142,8 +142,10 @@ define arm_aapcs_vfpcc <2 x i64> @test_vldrdq_gather_offset_z_s64(ptr %base, <2
142142
; CHECK-NEXT: entry:
143143
; CHECK-NEXT: [[TMP0:%.*]] = zext i16 [[P:%.*]] to i32
144144
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 [[TMP0]])
145-
; CHECK-NEXT: [[TMP2:%.*]] = call <2 x i64> @llvm.arm.mve.vldr.gather.offset.predicated.v2i64.p0.v2i64.v4i1(ptr [[BASE:%.*]], <2 x i64> [[OFFSET:%.*]], i32 64, i32 0, i32 0, <4 x i1> [[TMP1]])
146-
; CHECK-NEXT: ret <2 x i64> [[TMP2]]
145+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> [[TMP1]])
146+
; CHECK-NEXT: [[TMP3:%.*]] = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 [[TMP2]])
147+
; CHECK-NEXT: [[TMP4:%.*]] = call <2 x i64> @llvm.arm.mve.vldr.gather.offset.predicated.v2i64.p0.v2i64.v2i1(ptr [[BASE:%.*]], <2 x i64> [[OFFSET:%.*]], i32 64, i32 0, i32 0, <2 x i1> [[TMP3]])
148+
; CHECK-NEXT: ret <2 x i64> [[TMP4]]
147149
;
148150
entry:
149151
%0 = zext i16 %p to i32
@@ -195,7 +197,9 @@ define arm_aapcs_vfpcc void @test_vstrdq_scatter_offset_p_s64(ptr %base, <2 x i6
195197
; CHECK-NEXT: entry:
196198
; CHECK-NEXT: [[TMP0:%.*]] = zext i16 [[P:%.*]] to i32
197199
; CHECK-NEXT: [[TMP1:%.*]] = call <4 x i1> @llvm.arm.mve.pred.i2v.v4i1(i32 [[TMP0]])
198-
; CHECK-NEXT: call void @llvm.arm.mve.vstr.scatter.offset.predicated.p0.v2i64.v2i64.v4i1(ptr [[BASE:%.*]], <2 x i64> [[OFFSET:%.*]], <2 x i64> [[VALUE:%.*]], i32 64, i32 0, <4 x i1> [[TMP1]])
200+
; CHECK-NEXT: [[TMP2:%.*]] = call i32 @llvm.arm.mve.pred.v2i.v4i1(<4 x i1> [[TMP1]])
201+
; CHECK-NEXT: [[TMP3:%.*]] = call <2 x i1> @llvm.arm.mve.pred.i2v.v2i1(i32 [[TMP2]])
202+
; CHECK-NEXT: call void @llvm.arm.mve.vstr.scatter.offset.predicated.p0.v2i64.v2i64.v2i1(ptr [[BASE:%.*]], <2 x i64> [[OFFSET:%.*]], <2 x i64> [[VALUE:%.*]], i32 64, i32 0, <2 x i1> [[TMP3]])
199203
; CHECK-NEXT: ret void
200204
;
201205
entry:

0 commit comments

Comments
 (0)