Index: tests_lit/llvm2ice_tests/randomize-immediates.ll |
diff --git a/tests_lit/llvm2ice_tests/randomize-immediates.ll b/tests_lit/llvm2ice_tests/randomize-immediates.ll |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8635514fd563fb79d029355157bc34a9d4db2ed7 |
--- /dev/null |
+++ b/tests_lit/llvm2ice_tests/randomize-immediates.ll |
@@ -0,0 +1,35 @@ |
+; This is a smoke test of constant blinding and constant pooling. |
+ |
+; RUN: %llvm2ice -O2 -rng-seed=1 -randomize-immediates=constant-blinding %s \ |
+; RUN: | FileCheck %s --check-prefix=BLINDING |
+; RUN: %llvm2ice -O2 -rng-seed=1 -randomize-immediates=constant-pooling %s \ |
+; RUN: | FileCheck %s --check-prefix=POOLING |
+ |
+define i32 @add_arg_plus_200000(i32 %arg) { |
+entry: |
+ %res = add i32 200000, %arg |
+ ret i32 %res |
+; BLINDING-LABEL: add_arg_plus_200000: |
+; BLINDING: mov ecx, 16807 |
+; BLINDING: xor ecx, 216295 |
Jim Stichnoth
2014/08/13 23:30:26
Instead of ecx, could you use a pattern that tests
wala
2014/08/16 00:07:13
Done.
|
+ |
+; POOLING-LABEL: add_arg_plus_200000: |
+; POOLING: mov ecx, dword ptr [L$i32$0] |
Jim Stichnoth
2014/08/13 23:30:26
Instead of ecx, would it be reasonable test for an
wala
2014/08/16 00:07:13
Done.
|
+} |
+ |
+define float @load_arg_plus_200000(float* %arg) { |
+entry: |
+ %arg.int = ptrtoint float* %arg to i32 |
+ %addr.int = add i32 %arg.int, 200000 |
+ %addr.ptr = inttoptr i32 %addr.int to float* |
+ %addr.load = load float* %addr.ptr, align 4 |
+ ret float %addr.load |
+; BLINDING-LABEL: load_arg_plus_200000: |
+; BLINDING: mov ecx, 282475249 |
+; BLINDING: xor ecx, 282408881 |
+; BLINDING: lea eax, dword ptr [eax+ecx] |
+ |
+; POOLING-LABEL: load_arg_plus_200000: |
+; POOLING: mov ecx, dword ptr [L$i32$0] |
+; POOLING: lea eax, dword ptr [eax+ecx] |
+} |