|
1 | 1 | ; 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 |
3 | 3 |
|
4 | 4 | target datalayout = "E-p:256:256-i256:256:256-S32-a:256:256" |
5 | 5 | target triple = "eravm" |
@@ -58,6 +58,20 @@ entry: |
58 | 58 | ret i256 %or |
59 | 59 | } |
60 | 60 |
|
| 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 | + |
61 | 75 | define i256 @rolyrr(i256 %rs1) { |
62 | 76 | ; CHECK-LABEL: rolyrr: |
63 | 77 | ; CHECK: ; %bb.0: ; %entry |
@@ -168,6 +182,23 @@ entry: |
168 | 182 | ret void |
169 | 183 | } |
170 | 184 |
|
| 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 | + |
171 | 202 | define void @rolyrs(i256 %rs1) { |
172 | 203 | ; CHECK-LABEL: rolyrs: |
173 | 204 | ; CHECK: ; %bb.0: ; %entry |
|
0 commit comments