aboutsummaryrefslogtreecommitdiffstats
path: root/test/Assembler/2007-02-01-UpgradeShift.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/Assembler/2007-02-01-UpgradeShift.ll')
-rw-r--r--test/Assembler/2007-02-01-UpgradeShift.ll18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/Assembler/2007-02-01-UpgradeShift.ll b/test/Assembler/2007-02-01-UpgradeShift.ll
new file mode 100644
index 0000000..0a9e3a9
--- /dev/null
+++ b/test/Assembler/2007-02-01-UpgradeShift.ll
@@ -0,0 +1,18 @@
+; Test that upgrading shift instructions and constant expressions works
+; correctly.
+; RUN: llvm-upgrade < %s | grep {ashr i32 .X, 2}
+; RUN: llvm-upgrade < %s | grep {lshr i32 .X, 2}
+; RUN: llvm-upgrade < %s | grep {shl i32 .X, 2}
+; RUN: llvm-upgrade < %s | grep {ashr i32 .X, 6}
+; RUN: llvm-upgrade < %s | grep {lshr i32 .X, 1}
+; RUN: llvm-upgrade < %s | grep {shl i32 .X, 1}
+
+void %test(int %X) {
+ %A = ashr int %X, ubyte 2
+ %B = lshr int %X, ubyte 2
+ %C = shl int %X, ubyte 2
+ %D = ashr int %X, ubyte trunc ( int shl (int 3, ubyte 1) to ubyte )
+ %E = lshr int %X, ubyte trunc ( int ashr (int 3, ubyte 1) to ubyte )
+ %F = shl int %X, ubyte trunc ( int lshr (int 3, ubyte 1) to ubyte )
+ ret void
+}