Skip to content

Commit 338f23b

Browse files
author
git apple-llvm automerger
committed
Merge commit '38a8000f30aa' from llvm.org/main into next
2 parents 85044db + 38a8000 commit 338f23b

File tree

5 files changed

+68
-9
lines changed

5 files changed

+68
-9
lines changed

llvm/lib/Target/BPF/BPFISelLowering.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,9 @@ class BPFTargetLowering : public TargetLowering {
118118
return Op.size() >= 8 ? MVT::i64 : MVT::i32;
119119
}
120120

121-
bool isIntDivCheap(EVT VT, AttributeList Attr) const override { return true; }
121+
bool isIntDivCheap(EVT VT, AttributeList Attr) const override {
122+
return false;
123+
}
122124

123125
bool shouldConvertConstantLoadToIntImm(const APInt &Imm,
124126
Type *Ty) const override {

llvm/test/CodeGen/BPF/32-bit-subreg-alu.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@ entry:
200200
define dso_local i32 @div_i(i32 %a) local_unnamed_addr #0 {
201201
entry:
202202
%div = udiv i32 %a, 15
203-
; CHECK: w{{[0-9]+}} /= 15
203+
; CHECK-NOT: w{{[0-9]+}} /= 15
204204
ret i32 %div
205205
}
206206

@@ -216,7 +216,7 @@ entry:
216216
define dso_local i32 @rem_i(i32 %a) local_unnamed_addr #0 {
217217
entry:
218218
%rem = urem i32 %a, 15
219-
; CHECK: w{{[0-9]+}} %= 15
219+
; CHECK-NOT: w{{[0-9]+}} %= 15
220220
ret i32 %rem
221221
}
222222

llvm/test/CodeGen/BPF/sdiv_error.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; RUN: FileCheck %s < %t1
33
; CHECK: unsupported signed division
44

5-
define i32 @test(i32 %len) {
6-
%1 = sdiv i32 %len, 15
7-
ret i32 %1
5+
define i64 @test(i64 %len) {
6+
%1 = sdiv i64 %len, 15
7+
ret i64 %1
88
}

llvm/test/CodeGen/BPF/sdiv_to_mul.ll

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
; RUN: llc -march=bpfel -mcpu=v1 < %s | FileCheck --check-prefix=CHECK-V1 %s
2+
; RUN: llc -march=bpfel -mcpu=v4 < %s | FileCheck --check-prefix=CHECK-V4 %s
3+
4+
target triple = "bpf"
5+
6+
; struct S {
7+
; int var[3];
8+
; };
9+
; int foo1 (struct S *a, struct S *b)
10+
; {
11+
; return a - b;
12+
; }
13+
define dso_local i32 @foo1(ptr noundef %a, ptr noundef %b) local_unnamed_addr {
14+
entry:
15+
%sub.ptr.lhs.cast = ptrtoint ptr %a to i64
16+
%sub.ptr.rhs.cast = ptrtoint ptr %b to i64
17+
%sub.ptr.sub = sub i64 %sub.ptr.lhs.cast, %sub.ptr.rhs.cast
18+
%sub.ptr.div = sdiv exact i64 %sub.ptr.sub, 12
19+
%conv = trunc i64 %sub.ptr.div to i32
20+
ret i32 %conv
21+
}
22+
; CHECK-V1: r0 = r1
23+
; CHECK-V1: r0 -= r2
24+
; CHECK-V1: r0 s>>= 2
25+
; CHECK-V1: r1 = -6148914691236517205 ll
26+
; CHECK-V1: r0 *= r1
27+
; CHECK-V1: exit
28+
29+
; CHECK-V4: r0 = r1
30+
; CHECK-V4: r0 -= r2
31+
; CHECK-V4: r0 >>= 2
32+
; CHECK-V4: w0 *= -1431655765
33+
; CHECK-V4: exit
34+
35+
define dso_local noundef range(i32 -143165576, 143165577) i32 @foo2(i32 noundef %a) local_unnamed_addr {
36+
entry:
37+
%div = sdiv i32 %a, 15
38+
ret i32 %div
39+
}
40+
; CHECK-V1-NOT: r[[#]] s/= 15
41+
; CHECK-V4-NOT: w[[#]] s/= 15
42+
43+
define dso_local noundef range(i32 -14, 15) i32 @foo3(i32 noundef %a) local_unnamed_addr {
44+
entry:
45+
%rem = srem i32 %a, 15
46+
ret i32 %rem
47+
}
48+
; CHECK-V1-NOT: r[[#]] s%= 15
49+
; CHECK-V4-NOT: w[[#]] s%= 15
50+
51+
define dso_local i64 @foo4(i64 noundef %a) local_unnamed_addr {
52+
entry:
53+
%div = udiv exact i64 %a, 15
54+
ret i64 %div
55+
}
56+
; CHECK-V1-NOT: r[[#]] /= 15
57+
; CHECK-V4-NOT: w[[#]] /= 15

llvm/test/CodeGen/BPF/srem_error.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
; RUN: FileCheck %s < %t1
33
; CHECK: unsupported signed division
44

5-
define i32 @test(i32 %len) {
6-
%1 = srem i32 %len, 15
7-
ret i32 %1
5+
define i64 @test(i64 %len) {
6+
%1 = srem i64 %len, 15
7+
ret i64 %1
88
}

0 commit comments

Comments
 (0)