brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · b36a948 Raw
148 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-- -mattr=-bmi | FileCheck %s3 4; Use h-register extract and zero-extend.5 6define double @foo8(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {7; CHECK-LABEL: foo8:8; CHECK:       # %bb.0:9; CHECK-NEXT:    movq %rsi, %rax10; CHECK-NEXT:    movzbl %ah, %eax11; CHECK-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero12; CHECK-NEXT:    retq13  %t0 = lshr i64 %x, 814  %t1 = and i64 %t0, 25515  %t2 = getelementptr double, ptr %p, i64 %t116  %t3 = load double, ptr %t2, align 817  ret double %t318}19 20define float @foo4(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {21; CHECK-LABEL: foo4:22; CHECK:       # %bb.0:23; CHECK-NEXT:    movq %rsi, %rax24; CHECK-NEXT:    movzbl %ah, %eax25; CHECK-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero26; CHECK-NEXT:    retq27  %t0 = lshr i64 %x, 828  %t1 = and i64 %t0, 25529  %t2 = getelementptr float, ptr %p, i64 %t130  %t3 = load float, ptr %t2, align 831  ret float %t332}33 34define i16 @foo2(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {35; CHECK-LABEL: foo2:36; CHECK:       # %bb.0:37; CHECK-NEXT:    movq %rsi, %rax38; CHECK-NEXT:    movzbl %ah, %eax39; CHECK-NEXT:    movzwl (%rdi,%rax,2), %eax40; CHECK-NEXT:    retq41  %t0 = lshr i64 %x, 842  %t1 = and i64 %t0, 25543  %t2 = getelementptr i16, ptr %p, i64 %t144  %t3 = load i16, ptr %t2, align 845  ret i16 %t346}47 48define i8 @foo1(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {49; CHECK-LABEL: foo1:50; CHECK:       # %bb.0:51; CHECK-NEXT:    movq %rsi, %rax52; CHECK-NEXT:    movzbl %ah, %eax53; CHECK-NEXT:    movzbl (%rdi,%rax), %eax54; CHECK-NEXT:    retq55  %t0 = lshr i64 %x, 856  %t1 = and i64 %t0, 25557  %t2 = getelementptr i8, ptr %p, i64 %t158  %t3 = load i8, ptr %t2, align 859  ret i8 %t360}61 62define i8 @bar8(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {63; CHECK-LABEL: bar8:64; CHECK:       # %bb.0:65; CHECK-NEXT:    movq %rsi, %rax66; CHECK-NEXT:    movzbl %ah, %eax67; CHECK-NEXT:    movzbl (%rdi,%rax,8), %eax68; CHECK-NEXT:    retq69  %t0 = lshr i64 %x, 570  %t1 = and i64 %t0, 204071  %t2 = getelementptr i8, ptr %p, i64 %t172  %t3 = load i8, ptr %t2, align 873  ret i8 %t374}75 76define i8 @bar4(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {77; CHECK-LABEL: bar4:78; CHECK:       # %bb.0:79; CHECK-NEXT:    movq %rsi, %rax80; CHECK-NEXT:    movzbl %ah, %eax81; CHECK-NEXT:    movzbl (%rdi,%rax,4), %eax82; CHECK-NEXT:    retq83  %t0 = lshr i64 %x, 684  %t1 = and i64 %t0, 102085  %t2 = getelementptr i8, ptr %p, i64 %t186  %t3 = load i8, ptr %t2, align 887  ret i8 %t388}89 90define i8 @bar2(ptr nocapture inreg %p, i64 inreg %x) nounwind readonly {91; CHECK-LABEL: bar2:92; CHECK:       # %bb.0:93; CHECK-NEXT:    movq %rsi, %rax94; CHECK-NEXT:    movzbl %ah, %eax95; CHECK-NEXT:    movzbl (%rdi,%rax,2), %eax96; CHECK-NEXT:    retq97  %t0 = lshr i64 %x, 798  %t1 = and i64 %t0, 51099  %t2 = getelementptr i8, ptr %p, i64 %t1100  %t3 = load i8, ptr %t2, align 8101  ret i8 %t3102}103 104define double @ext8(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {105; CHECK-LABEL: ext8:106; CHECK:       # %bb.0:107; CHECK-NEXT:    movl %esi, %eax108; CHECK-NEXT:    movzbl %ah, %eax109; CHECK-NEXT:    movsd {{.*#+}} xmm0 = mem[0],zero110; CHECK-NEXT:    retq111  %t0 = lshr i32 %x, 5112  %t1 = and i32 %t0, 2040113  %t2 = zext i32 %t1 to i64114  %t3 = getelementptr i8, ptr %p, i64 %t2115  %t4 = load double, ptr %t3, align 8116  ret double %t4117}118 119define float @ext4(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {120; CHECK-LABEL: ext4:121; CHECK:       # %bb.0:122; CHECK-NEXT:    movl %esi, %eax123; CHECK-NEXT:    movzbl %ah, %eax124; CHECK-NEXT:    movss {{.*#+}} xmm0 = mem[0],zero,zero,zero125; CHECK-NEXT:    retq126  %t0 = lshr i32 %x, 6127  %t1 = and i32 %t0, 1020128  %t2 = zext i32 %t1 to i64129  %t3 = getelementptr i8, ptr %p, i64 %t2130  %t4 = load float, ptr %t3, align 8131  ret float %t4132}133 134define i8 @ext2(ptr nocapture inreg %p, i32 inreg %x) nounwind readonly {135; CHECK-LABEL: ext2:136; CHECK:       # %bb.0:137; CHECK-NEXT:    movl %esi, %eax138; CHECK-NEXT:    movzbl %ah, %eax139; CHECK-NEXT:    movzbl (%rdi,%rax,2), %eax140; CHECK-NEXT:    retq141  %t0 = lshr i32 %x, 7142  %t1 = and i32 %t0, 510143  %t2 = zext i32 %t1 to i64144  %t3 = getelementptr i8, ptr %p, i64 %t2145  %t4 = load i8, ptr %t3, align 8146  ret i8 %t4147}148