summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/ConstantHoisting/RISCV/immediates.ll29
-rw-r--r--llvm/test/Transforms/ConstantHoisting/RISCV/lit.local.cfg2
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
OpenPOWER on IntegriCloud