aboutsummaryrefslogtreecommitdiffstats
path: root/test/CodeGen/Mips
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanak@gmail.com>2011-08-17 02:05:42 +0000
committerAkira Hatanaka <ahatanak@gmail.com>2011-08-17 02:05:42 +0000
commitbb15e117d328bd991b0723dd1b586c8437d9dced (patch)
tree87780965eb2b837e47dc2a2e17763b2de7277350 /test/CodeGen/Mips
parenta69179d7689bf302f3c7e04ee83c460e69b96b94 (diff)
downloadexternal_llvm-bb15e117d328bd991b0723dd1b586c8437d9dced.zip
external_llvm-bb15e117d328bd991b0723dd1b586c8437d9dced.tar.gz
external_llvm-bb15e117d328bd991b0723dd1b586c8437d9dced.tar.bz2
Add support for ext and ins.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@137804 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/Mips')
-rw-r--r--test/CodeGen/Mips/extins.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/CodeGen/Mips/extins.ll b/test/CodeGen/Mips/extins.ll
new file mode 100644
index 0000000..69f53e5
--- /dev/null
+++ b/test/CodeGen/Mips/extins.ll
@@ -0,0 +1,21 @@
+; RUN: llc -march=mips -mcpu=4ke < %s | FileCheck %s
+
+define i32 @ext0_5_9(i32 %s, i32 %pos, i32 %sz) nounwind readnone {
+entry:
+; CHECK: ext ${{[0-9]+}}, $4, 5, 9
+ %shr = lshr i32 %s, 5
+ %and = and i32 %shr, 511
+ ret i32 %and
+}
+
+define void @ins2_5_9(i32 %s, i32* nocapture %d) nounwind {
+entry:
+; CHECK: ins ${{[0-9]+}}, $4, 5, 9
+ %and = shl i32 %s, 5
+ %shl = and i32 %and, 16352
+ %tmp3 = load i32* %d, align 4
+ %and5 = and i32 %tmp3, -16353
+ %or = or i32 %and5, %shl
+ store i32 %or, i32* %d, align 4
+ ret void
+}