Skip to content

Commit cec9b77

Browse files
omjavaidkrishna2803
authored andcommitted
Revert "[VectorUtils] Trivially vectorize ldexp, [l]lround (llvm#145545)"
This reverts commit 1336675. This broke various LLVM testsuite buildbots for AArch64 SVE, but the problem got masked because relevant buildbots were already failing due to other breakage. It has broken llvm-test-suite test: gfortran-regression-compile-regression__vect__pr106253_f.test https://lab.llvm.org/buildbot/#/builders/4/builds/8164 https://lab.llvm.org/buildbot/#/builders/17/builds/9858 https://lab.llvm.org/buildbot/#/builders/41/builds/8067 https://lab.llvm.org/buildbot/#/builders/143/builds/9607
1 parent b9356ac commit cec9b77

File tree

5 files changed

+0
-813
lines changed

5 files changed

+0
-813
lines changed

llvm/lib/Analysis/VectorUtils.cpp

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,6 @@ bool llvm::isTriviallyVectorizable(Intrinsic::ID ID) {
8181
case Intrinsic::exp:
8282
case Intrinsic::exp10:
8383
case Intrinsic::exp2:
84-
case Intrinsic::ldexp:
8584
case Intrinsic::log:
8685
case Intrinsic::log10:
8786
case Intrinsic::log2:
@@ -109,8 +108,6 @@ bool llvm::isTriviallyVectorizable(Intrinsic::ID ID) {
109108
case Intrinsic::canonicalize:
110109
case Intrinsic::fptosi_sat:
111110
case Intrinsic::fptoui_sat:
112-
case Intrinsic::lround:
113-
case Intrinsic::llround:
114111
case Intrinsic::lrint:
115112
case Intrinsic::llrint:
116113
case Intrinsic::ucmp:
@@ -192,8 +189,6 @@ bool llvm::isVectorIntrinsicWithOverloadTypeAtArg(
192189
switch (ID) {
193190
case Intrinsic::fptosi_sat:
194191
case Intrinsic::fptoui_sat:
195-
case Intrinsic::lround:
196-
case Intrinsic::llround:
197192
case Intrinsic::lrint:
198193
case Intrinsic::llrint:
199194
case Intrinsic::vp_lrint:
@@ -208,7 +203,6 @@ bool llvm::isVectorIntrinsicWithOverloadTypeAtArg(
208203
case Intrinsic::vp_is_fpclass:
209204
return OpdIdx == 0;
210205
case Intrinsic::powi:
211-
case Intrinsic::ldexp:
212206
return OpdIdx == -1 || OpdIdx == 1;
213207
default:
214208
return OpdIdx == -1;

llvm/test/Transforms/LoopVectorize/intrinsic.ll

Lines changed: 0 additions & 201 deletions
Original file line numberDiff line numberDiff line change
@@ -324,56 +324,6 @@ for.end: ; preds = %for.body, %entry
324324

325325
declare double @llvm.exp2.f64(double)
326326

327-
define void @ldexp_f32i32(i32 %n, ptr %y, ptr %x, i32 %exp) {
328-
; CHECK-LABEL: @ldexp_f32i32(
329-
; CHECK: llvm.ldexp.v4f32.v4i32
330-
; CHECK: ret void
331-
;
332-
entry:
333-
br label %for.body
334-
335-
for.body: ; preds = %entry, %for.body
336-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
337-
%arrayidx = getelementptr inbounds float, ptr %y, i32 %iv
338-
%0 = load float, ptr %arrayidx, align 4
339-
%call = tail call float @llvm.ldexp.f32.i32(float %0, i32 %exp)
340-
%arrayidx2 = getelementptr inbounds float, ptr %x, i32 %iv
341-
store float %call, ptr %arrayidx2, align 4
342-
%iv.next = add i32 %iv, 1
343-
%exitcond = icmp eq i32 %iv.next, %n
344-
br i1 %exitcond, label %for.end, label %for.body
345-
346-
for.end: ; preds = %for.body, %entry
347-
ret void
348-
}
349-
350-
declare float @llvm.ldexp.f32.i32(float, i32)
351-
352-
define void @ldexp_f64i32(i32 %n, ptr %y, ptr %x, i32 %exp) {
353-
; CHECK-LABEL: @ldexp_f64i32(
354-
; CHECK: llvm.ldexp.v4f64.v4i32
355-
; CHECK: ret void
356-
;
357-
entry:
358-
br label %for.body
359-
360-
for.body: ; preds = %entry, %for.body
361-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
362-
%arrayidx = getelementptr inbounds double, ptr %y, i32 %iv
363-
%0 = load double, ptr %arrayidx, align 8
364-
%call = tail call double @llvm.ldexp.f64.i32(double %0, i32 %exp)
365-
%arrayidx2 = getelementptr inbounds double, ptr %x, i32 %iv
366-
store double %call, ptr %arrayidx2, align 8
367-
%iv.next = add i32 %iv, 1
368-
%exitcond = icmp eq i32 %iv.next, %n
369-
br i1 %exitcond, label %for.end, label %for.body
370-
371-
for.end: ; preds = %for.body, %entry
372-
ret void
373-
}
374-
375-
declare double @llvm.ldexp.f64.i32(double, i32)
376-
377327
define void @log_f32(i32 %n, ptr %y, ptr %x) {
378328
; CHECK-LABEL: @log_f32(
379329
; CHECK: llvm.log.v4f32
@@ -1026,157 +976,6 @@ for.end: ; preds = %for.body, %entry
1026976

1027977
declare double @llvm.roundeven.f64(double)
1028978

1029-
1030-
define void @lround_i32f32(i32 %n, ptr %y, ptr %x) {
1031-
; CHECK-LABEL: @lround_i32f32(
1032-
; CHECK: llvm.lround.v4i32.v4f32
1033-
; CHECK: ret void
1034-
;
1035-
entry:
1036-
br label %for.body
1037-
1038-
for.body: ; preds = %entry, %for.body
1039-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
1040-
%arrayidx = getelementptr inbounds float, ptr %y, i32 %iv
1041-
%0 = load float, ptr %arrayidx, align 4
1042-
%call = tail call i32 @llvm.lround.i32.f32(float %0)
1043-
%arrayidx2 = getelementptr inbounds i32, ptr %x, i32 %iv
1044-
store i32 %call, ptr %arrayidx2, align 4
1045-
%iv.next = add i32 %iv, 1
1046-
%exitcond = icmp eq i32 %iv.next, %n
1047-
br i1 %exitcond, label %for.end, label %for.body
1048-
1049-
for.end: ; preds = %for.body, %entry
1050-
ret void
1051-
}
1052-
1053-
declare i32 @llvm.lround.i32.f32(float)
1054-
1055-
define void @lround_i32f64(i32 %n, ptr %y, ptr %x) {
1056-
; CHECK-LABEL: @lround_i32f64(
1057-
; CHECK: llvm.lround.v4i32.v4f64
1058-
; CHECK: ret void
1059-
;
1060-
entry:
1061-
br label %for.body
1062-
1063-
for.body: ; preds = %entry, %for.body
1064-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
1065-
%arrayidx = getelementptr inbounds double, ptr %y, i32 %iv
1066-
%0 = load double, ptr %arrayidx, align 8
1067-
%call = tail call i32 @llvm.lround.i32.f64(double %0)
1068-
%arrayidx2 = getelementptr inbounds i32, ptr %x, i32 %iv
1069-
store i32 %call, ptr %arrayidx2, align 8
1070-
%iv.next = add i32 %iv, 1
1071-
%exitcond = icmp eq i32 %iv.next, %n
1072-
br i1 %exitcond, label %for.end, label %for.body
1073-
1074-
for.end: ; preds = %for.body, %entry
1075-
ret void
1076-
}
1077-
1078-
declare i32 @llvm.lround.i32.f64(double)
1079-
1080-
define void @lround_i64f32(i32 %n, ptr %y, ptr %x) {
1081-
; CHECK-LABEL: @lround_i64f32(
1082-
; CHECK: llvm.lround.v4i64.v4f32
1083-
; CHECK: ret void
1084-
;
1085-
entry:
1086-
br label %for.body
1087-
1088-
for.body: ; preds = %entry, %for.body
1089-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
1090-
%arrayidx = getelementptr inbounds float, ptr %y, i32 %iv
1091-
%0 = load float, ptr %arrayidx, align 4
1092-
%call = tail call i64 @llvm.lround.i64.f32(float %0)
1093-
%arrayidx2 = getelementptr inbounds i64, ptr %x, i32 %iv
1094-
store i64 %call, ptr %arrayidx2, align 4
1095-
%iv.next = add i32 %iv, 1
1096-
%exitcond = icmp eq i32 %iv.next, %n
1097-
br i1 %exitcond, label %for.end, label %for.body
1098-
1099-
for.end: ; preds = %for.body, %entry
1100-
ret void
1101-
}
1102-
1103-
declare i64 @llvm.lround.i64.f32(float)
1104-
1105-
define void @lround_i64f64(i32 %n, ptr %y, ptr %x) {
1106-
; CHECK-LABEL: @lround_i64f64(
1107-
; CHECK: llvm.lround.v4i64.v4f64
1108-
; CHECK: ret void
1109-
;
1110-
entry:
1111-
br label %for.body
1112-
1113-
for.body: ; preds = %entry, %for.body
1114-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
1115-
%arrayidx = getelementptr inbounds double, ptr %y, i32 %iv
1116-
%0 = load double, ptr %arrayidx, align 8
1117-
%call = tail call i64 @llvm.lround.i64.f64(double %0)
1118-
%arrayidx2 = getelementptr inbounds i64, ptr %x, i32 %iv
1119-
store i64 %call, ptr %arrayidx2, align 8
1120-
%iv.next = add i32 %iv, 1
1121-
%exitcond = icmp eq i32 %iv.next, %n
1122-
br i1 %exitcond, label %for.end, label %for.body
1123-
1124-
for.end: ; preds = %for.body, %entry
1125-
ret void
1126-
}
1127-
1128-
declare i64 @llvm.lround.i64.f64(double)
1129-
1130-
define void @llround_i64f32(i32 %n, ptr %y, ptr %x) {
1131-
; CHECK-LABEL: @llround_i64f32(
1132-
; CHECK: llvm.llround.v4i64.v4f32
1133-
; CHECK: ret void
1134-
;
1135-
entry:
1136-
br label %for.body
1137-
1138-
for.body: ; preds = %entry, %for.body
1139-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
1140-
%arrayidx = getelementptr inbounds float, ptr %y, i32 %iv
1141-
%0 = load float, ptr %arrayidx, align 4
1142-
%call = tail call i64 @llvm.llround.i64.f32(float %0)
1143-
%arrayidx2 = getelementptr inbounds i64, ptr %x, i32 %iv
1144-
store i64 %call, ptr %arrayidx2, align 4
1145-
%iv.next = add i32 %iv, 1
1146-
%exitcond = icmp eq i32 %iv.next, %n
1147-
br i1 %exitcond, label %for.end, label %for.body
1148-
1149-
for.end: ; preds = %for.body, %entry
1150-
ret void
1151-
}
1152-
1153-
declare i64 @llvm.llround.i64.f32(float)
1154-
1155-
define void @llround_i64f64(i32 %n, ptr %y, ptr %x) {
1156-
; CHECK-LABEL: @llround_i64f64(
1157-
; CHECK: llvm.llround.v4i64.v4f64
1158-
; CHECK: ret void
1159-
;
1160-
entry:
1161-
br label %for.body
1162-
1163-
for.body: ; preds = %entry, %for.body
1164-
%iv = phi i32 [ 0, %entry ], [ %iv.next, %for.body ]
1165-
%arrayidx = getelementptr inbounds double, ptr %y, i32 %iv
1166-
%0 = load double, ptr %arrayidx, align 8
1167-
%call = tail call i64 @llvm.llround.i64.f64(double %0)
1168-
%arrayidx2 = getelementptr inbounds i64, ptr %x, i32 %iv
1169-
store i64 %call, ptr %arrayidx2, align 8
1170-
%iv.next = add i32 %iv, 1
1171-
%exitcond = icmp eq i32 %iv.next, %n
1172-
br i1 %exitcond, label %for.end, label %for.body
1173-
1174-
for.end: ; preds = %for.body, %entry
1175-
ret void
1176-
}
1177-
1178-
declare i64 @llvm.llround.i64.f64(double)
1179-
1180979
define void @fma_f32(i32 %n, ptr %y, ptr %x, ptr %z, ptr %w) {
1181980
; CHECK-LABEL: @fma_f32(
1182981
; CHECK: llvm.fma.v4f32

0 commit comments

Comments
 (0)