Skip to content

Commit 1c2dd3c

Browse files
vladimirradosavljevicakiramenai
authored andcommitted
[EraVM] Add pre-commit tests for Fix two non-commutative arith patterns
Add tests where large_imm as a first operand is not selected for non-commutative arith instructions. Disable EraVMCombineAddressingMode pass in these tests, so `add const, r0, rN` is not combined with uses in combineMoveImmUse. Signed-off-by: Vladimir Radosavljevic <[email protected]>
1 parent ab45399 commit 1c2dd3c

File tree

5 files changed

+115
-5
lines changed

5 files changed

+115
-5
lines changed

llvm/test/CodeGen/EraVM/rol.ll

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc --disable-eravm-scalar-opt-passes < %s | FileCheck %s
2+
; RUN: llc --disable-eravm-scalar-opt-passes -enable-eravm-combine-addressing-mode=false < %s | FileCheck %s
33

44
target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256"
55
target triple = "eravm"
@@ -58,6 +58,20 @@ entry:
5858
ret i256 %or
5959
}
6060

61+
define i256 @rolcrr_cp(i256 %rs1) {
62+
; CHECK-LABEL: rolcrr_cp:
63+
; CHECK: ; %bb.0: ; %entry
64+
; CHECK-NEXT: add @CPI4_0[0], r0, r2
65+
; CHECK-NEXT: rol r2, r1, r1
66+
; CHECK-NEXT: ret
67+
entry:
68+
%sub = sub i256 256, %rs1
69+
%shl = shl i256 123456789, %rs1
70+
%lshr = lshr i256 123456789, %sub
71+
%or = or i256 %shl, %lshr
72+
ret i256 %or
73+
}
74+
6175
define i256 @rolyrr(i256 %rs1) {
6276
; CHECK-LABEL: rolyrr:
6377
; CHECK: ; %bb.0: ; %entry
@@ -168,6 +182,23 @@ entry:
168182
ret void
169183
}
170184

185+
define void @rolcrs_cp(i256 %rs1) {
186+
; CHECK-LABEL: rolcrs_cp:
187+
; CHECK: ; %bb.0: ; %entry
188+
; CHECK-NEXT: nop stack+=[1 + r0]
189+
; CHECK-NEXT: add @CPI12_0[0], r0, r2
190+
; CHECK-NEXT: rol r2, r1, stack-[1]
191+
; CHECK-NEXT: ret
192+
entry:
193+
%destptr = alloca i256
194+
%sub = sub i256 256, %rs1
195+
%shl = shl i256 123456789, %rs1
196+
%lshr = lshr i256 123456789, %sub
197+
%or = or i256 %shl, %lshr
198+
store i256 %or, i256* %destptr
199+
ret void
200+
}
201+
171202
define void @rolyrs(i256 %rs1) {
172203
; CHECK-LABEL: rolyrs:
173204
; CHECK: ; %bb.0: ; %entry

llvm/test/CodeGen/EraVM/ror.ll

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2-
; RUN: llc --disable-eravm-scalar-opt-passes < %s | FileCheck %s
2+
; RUN: llc --disable-eravm-scalar-opt-passes -enable-eravm-combine-addressing-mode=false < %s | FileCheck %s
33

44
target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256"
55
target triple = "eravm"
@@ -56,6 +56,20 @@ entry:
5656
ret i256 %or
5757
}
5858

59+
define i256 @rorcrr_cp(i256 %rs1) {
60+
; CHECK-LABEL: rorcrr_cp:
61+
; CHECK: ; %bb.0: ; %entry
62+
; CHECK-NEXT: add @CPI4_0[0], r0, r2
63+
; CHECK-NEXT: ror r2, r1, r1
64+
; CHECK-NEXT: ret
65+
entry:
66+
%sub = sub i256 256, %rs1
67+
%lshr = lshr i256 123456789, %rs1
68+
%shl = shl i256 123456789, %sub
69+
%or = or i256 %shl, %lshr
70+
ret i256 %or
71+
}
72+
5973
define i256 @roryrr(i256 %rs1) {
6074
; CHECK-LABEL: roryrr:
6175
; CHECK: ; %bb.0: ; %entry
@@ -164,6 +178,23 @@ entry:
164178
ret void
165179
}
166180

181+
define void @rorcrs_cp(i256 %rs1) {
182+
; CHECK-LABEL: rorcrs_cp:
183+
; CHECK: ; %bb.0: ; %entry
184+
; CHECK-NEXT: nop stack+=[1 + r0]
185+
; CHECK-NEXT: add @CPI12_0[0], r0, r2
186+
; CHECK-NEXT: ror r2, r1, stack-[1]
187+
; CHECK-NEXT: ret
188+
entry:
189+
%destptr = alloca i256
190+
%sub = sub i256 256, %rs1
191+
%lshr = lshr i256 123456789, %rs1
192+
%shl = shl i256 123456789, %sub
193+
%or = or i256 %shl, %lshr
194+
store i256 %or, i256* %destptr
195+
ret void
196+
}
197+
167198
define void @roryrs(i256 %rs1) {
168199
; CHECK-LABEL: roryrs:
169200
; CHECK: ; %bb.0: ; %entry

llvm/test/CodeGen/EraVM/shl.ll

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc --disable-eravm-scalar-opt-passes < %s | FileCheck %s
1+
; RUN: llc --disable-eravm-scalar-opt-passes -enable-eravm-combine-addressing-mode=false < %s | FileCheck %s
22

33
target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256"
44
target triple = "eravm"
@@ -34,6 +34,13 @@ define i256 @shlcrr(i256 %rs1) nounwind {
3434
ret i256 %res
3535
}
3636

37+
; CHECK-LABEL: shlcrr_cp
38+
define i256 @shlcrr_cp(i256 %rs1) nounwind {
39+
; CHECK: shl r2, r1, r1
40+
%res = shl i256 123456789, %rs1
41+
ret i256 %res
42+
}
43+
3744
; CHECK-LABEL: shlyrr
3845
define i256 @shlyrr(i256 %rs1) nounwind {
3946
; CHECK: shl.s @val[0], r1, r1
@@ -97,6 +104,15 @@ define void @shlcrs(i256 %rs1) nounwind {
97104
ret void
98105
}
99106

107+
; CHECK-LABEL: shlcrs_cp
108+
define void @shlcrs_cp(i256 %rs1) nounwind {
109+
%valptr = alloca i256
110+
; CHECK: shl r2, r1, stack-[1]
111+
%res = shl i256 123456789, %rs1
112+
store i256 %res, i256* %valptr
113+
ret void
114+
}
115+
100116
; CHECK-LABEL: shlyrs
101117
define void @shlyrs(i256 %rs1) nounwind {
102118
%valptr = alloca i256

llvm/test/CodeGen/EraVM/shr.ll

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc --disable-eravm-scalar-opt-passes < %s | FileCheck %s
1+
; RUN: llc --disable-eravm-scalar-opt-passes -enable-eravm-combine-addressing-mode=false < %s | FileCheck %s
22

33
target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256"
44
target triple = "eravm"
@@ -34,6 +34,13 @@ define i256 @shrcrr(i256 %rs1) nounwind {
3434
ret i256 %res
3535
}
3636

37+
; CHECK-LABEL: shrcrr_cp
38+
define i256 @shrcrr_cp(i256 %rs1) nounwind {
39+
; CHECK: shr r2, r1, r1
40+
%res = lshr i256 123456789, %rs1
41+
ret i256 %res
42+
}
43+
3744
; CHECK-LABEL: shryrr
3845
define i256 @shryrr(i256 %rs1) nounwind {
3946
; CHECK: shr.s @val[0], r1, r1
@@ -97,6 +104,15 @@ define void @shrcrs(i256 %rs1) nounwind {
97104
ret void
98105
}
99106

107+
; CHECK-LABEL: shrcrs_cp
108+
define void @shrcrs_cp(i256 %rs1) nounwind {
109+
%valptr = alloca i256
110+
; CHECK: shr r2, r1, stack-[1]
111+
%res = lshr i256 123456789, %rs1
112+
store i256 %res, i256* %valptr
113+
ret void
114+
}
115+
100116
; CHECK-LABEL: shryrs
101117
define void @shryrs(i256 %rs1) nounwind {
102118
%valptr = alloca i256

llvm/test/CodeGen/EraVM/sub.ll

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: llc --disable-eravm-scalar-opt-passes < %s | FileCheck %s
1+
; RUN: llc --disable-eravm-scalar-opt-passes -enable-eravm-combine-addressing-mode=false < %s | FileCheck %s
22

33
target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256"
44
target triple = "eravm"
@@ -41,6 +41,13 @@ define i256 @subcrr(i256 %rs1) nounwind {
4141
ret i256 %res
4242
}
4343

44+
; CHECK-LABEL: subcrr_cp
45+
define i256 @subcrr_cp(i256 %rs1) nounwind {
46+
; CHECK: sub r2, r1, r1
47+
%res = sub i256 123456789, %rs1
48+
ret i256 %res
49+
}
50+
4451
; CHECK-LABEL: subyrr
4552
define i256 @subyrr(i256 %rs1) nounwind {
4653
; CHECK: sub.s @val[0], r1, r1
@@ -104,6 +111,15 @@ define void @subcrs(i256 %rs1) nounwind {
104111
ret void
105112
}
106113

114+
; CHECK-LABEL: subcrs_cp
115+
define void @subcrs_cp(i256 %rs1) nounwind {
116+
%valptr = alloca i256
117+
; CHECK: sub r2, r1, stack-[1]
118+
%res = sub i256 123456789, %rs1
119+
store i256 %res, i256* %valptr
120+
ret void
121+
}
122+
107123
; CHECK-LABEL: subyrs
108124
define void @subyrs(i256 %rs1) nounwind {
109125
%valptr = alloca i256

0 commit comments

Comments
 (0)