96 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=i686-- -mattr=-bmi | FileCheck %s3 4; Use h-register extract and zero-extend.5 6define double @foo8(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {7; CHECK-LABEL: foo8:8; CHECK: # %bb.0:9; CHECK-NEXT: movzbl %dh, %ecx10; CHECK-NEXT: fldl (%eax,%ecx,8)11; CHECK-NEXT: retl12 %t0 = lshr i32 %x, 813 %t1 = and i32 %t0, 25514 %t2 = getelementptr double, ptr %p, i32 %t115 %t3 = load double, ptr %t2, align 816 ret double %t317}18 19define float @foo4(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {20; CHECK-LABEL: foo4:21; CHECK: # %bb.0:22; CHECK-NEXT: movzbl %dh, %ecx23; CHECK-NEXT: flds (%eax,%ecx,4)24; CHECK-NEXT: retl25 %t0 = lshr i32 %x, 826 %t1 = and i32 %t0, 25527 %t2 = getelementptr float, ptr %p, i32 %t128 %t3 = load float, ptr %t2, align 829 ret float %t330}31 32define i16 @foo2(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {33; CHECK-LABEL: foo2:34; CHECK: # %bb.0:35; CHECK-NEXT: movzbl %dh, %ecx36; CHECK-NEXT: movzwl (%eax,%ecx,2), %eax37; CHECK-NEXT: retl38 %t0 = lshr i32 %x, 839 %t1 = and i32 %t0, 25540 %t2 = getelementptr i16, ptr %p, i32 %t141 %t3 = load i16, ptr %t2, align 842 ret i16 %t343}44 45define i8 @foo1(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {46; CHECK-LABEL: foo1:47; CHECK: # %bb.0:48; CHECK-NEXT: movzbl %dh, %ecx49; CHECK-NEXT: movzbl (%eax,%ecx), %eax50; CHECK-NEXT: retl51 %t0 = lshr i32 %x, 852 %t1 = and i32 %t0, 25553 %t2 = getelementptr i8, ptr %p, i32 %t154 %t3 = load i8, ptr %t2, align 855 ret i8 %t356}57 58define i8 @bar8(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {59; CHECK-LABEL: bar8:60; CHECK: # %bb.0:61; CHECK-NEXT: movzbl %dh, %ecx62; CHECK-NEXT: movzbl (%eax,%ecx,8), %eax63; CHECK-NEXT: retl64 %t0 = lshr i32 %x, 565 %t1 = and i32 %t0, 204066 %t2 = getelementptr i8, ptr %p, i32 %t167 %t3 = load i8, ptr %t2, align 868 ret i8 %t369}70 71define i8 @bar4(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {72; CHECK-LABEL: bar4:73; CHECK: # %bb.0:74; CHECK-NEXT: movzbl %dh, %ecx75; CHECK-NEXT: movzbl (%eax,%ecx,4), %eax76; CHECK-NEXT: retl77 %t0 = lshr i32 %x, 678 %t1 = and i32 %t0, 102079 %t2 = getelementptr i8, ptr %p, i32 %t180 %t3 = load i8, ptr %t2, align 881 ret i8 %t382}83 84define i8 @bar2(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {85; CHECK-LABEL: bar2:86; CHECK: # %bb.0:87; CHECK-NEXT: movzbl %dh, %ecx88; CHECK-NEXT: movzbl (%eax,%ecx,2), %eax89; CHECK-NEXT: retl90 %t0 = lshr i32 %x, 791 %t1 = and i32 %t0, 51092 %t2 = getelementptr i8, ptr %p, i32 %t193 %t3 = load i8, ptr %t2, align 894 ret i8 %t395}96