diff options
Diffstat (limited to 'llvm/test/Transforms')
| -rw-r--r-- | llvm/test/Transforms/ConstantHoisting/RISCV/immediates.ll | 29 | ||||
| -rw-r--r-- | llvm/test/Transforms/ConstantHoisting/RISCV/lit.local.cfg | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/llvm/test/Transforms/ConstantHoisting/RISCV/immediates.ll b/llvm/test/Transforms/ConstantHoisting/RISCV/immediates.ll new file mode 100644 index 00000000000..689e10e70ff --- /dev/null +++ b/llvm/test/Transforms/ConstantHoisting/RISCV/immediates.ll @@ -0,0 +1,29 @@ +; RUN: opt -mtriple=riscv32-unknown-elf -S -consthoist < %s | FileCheck %s +; RUN: opt -mtriple=riscv64-unknown-elf -S -consthoist < %s | FileCheck %s + +; Check that we don't hoist immediates with small values. +define i64 @test1(i64 %a) nounwind { +; CHECK-LABEL: test1 +; CHECK-NOT: %const = bitcast i64 2 to i64 + %1 = mul i64 %a, 2 + %2 = add i64 %1, 2 + ret i64 %2 +} + +; Check that we don't hoist immediates with small values. +define i64 @test2(i64 %a) nounwind { +; CHECK-LABEL: test2 +; CHECK-NOT: %const = bitcast i64 2047 to i64 + %1 = mul i64 %a, 2047 + %2 = add i64 %1, 2047 + ret i64 %2 +} + +; Check that we hoist immediates with large values. +define i64 @test3(i64 %a) nounwind { +; CHECK-LABEL: test3 +; CHECK: %const = bitcast i64 32767 to i64 + %1 = mul i64 %a, 32767 + %2 = add i64 %1, 32767 + ret i64 %2 +}
\ No newline at end of file diff --git a/llvm/test/Transforms/ConstantHoisting/RISCV/lit.local.cfg b/llvm/test/Transforms/ConstantHoisting/RISCV/lit.local.cfg new file mode 100644 index 00000000000..4a2fc1519cd --- /dev/null +++ b/llvm/test/Transforms/ConstantHoisting/RISCV/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'RISCV' in config.root.targets: + config.unsupported = True
\ No newline at end of file |

