summaryrefslogtreecommitdiffstats
path: root/llvm/test/CodeGen/X86/fold-and-shift.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/CodeGen/X86/fold-and-shift.ll')
-rw-r--r--llvm/test/CodeGen/X86/fold-and-shift.ll34
1 files changed, 34 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/X86/fold-and-shift.ll b/llvm/test/CodeGen/X86/fold-and-shift.ll
index a434c1f9c1d..93b8bbd3080 100644
--- a/llvm/test/CodeGen/X86/fold-and-shift.ll
+++ b/llvm/test/CodeGen/X86/fold-and-shift.ll
@@ -89,3 +89,37 @@ entry:
%sum.2 = add i32 %sum.1, %index
ret i32 %sum.2
}
+
+define i8 @t5(i8* %X, i32 %i) {
+; CHECK-LABEL: t5:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax
+; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
+; CHECK-NEXT: andl $1073741810, %ecx # imm = 0x3FFFFFF2
+; CHECK-NEXT: movb (%eax,%ecx,4), %al
+; CHECK-NEXT: retl
+
+entry:
+ %tmp2 = shl i32 %i, 2
+ %tmp4 = and i32 %tmp2, -56
+ %tmp7 = getelementptr i8, i8* %X, i32 %tmp4
+ %tmp9 = load i8, i8* %tmp7
+ ret i8 %tmp9
+}
+
+define i8 @t6(i8* %X, i32 %i) {
+; CHECK-LABEL: t6:
+; CHECK: # %bb.0: # %entry
+; CHECK-NEXT: movl {{[0-9]+}}(%esp), %eax
+; CHECK-NEXT: movl {{[0-9]+}}(%esp), %ecx
+; CHECK-NEXT: andl $1073741569, %ecx # imm = 0x3FFFFF01
+; CHECK-NEXT: movb (%eax,%ecx,4), %al
+; CHECK-NEXT: retl
+
+entry:
+ %tmp2 = shl i32 %i, 2
+ %tmp4 = and i32 %tmp2, -1020
+ %tmp7 = getelementptr i8, i8* %X, i32 %tmp4
+ %tmp9 = load i8, i8* %tmp7
+ ret i8 %tmp9
+}
OpenPOWER on IntegriCloud