brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.8 KiB · fabf758 Raw
111 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s3 4define i8 @t1(ptr %X, i64 %i) {5; CHECK-LABEL: t1:6; CHECK:       # %bb.0: # %entry7; CHECK-NEXT:    andq $-255, %rsi8; CHECK-NEXT:    movzbl (%rdi,%rsi,4), %eax9; CHECK-NEXT:    retq10 11entry:12  %tmp2 = shl i64 %i, 213  %tmp4 = and i64 %tmp2, -102014  %tmp7 = getelementptr i8, ptr %X, i64 %tmp415  %tmp9 = load i8, ptr %tmp716  ret i8 %tmp917}18 19define i8 @t2(ptr %X, i64 %i) {20; CHECK-LABEL: t2:21; CHECK:       # %bb.0: # %entry22; CHECK-NEXT:    andq $-14, %rsi23; CHECK-NEXT:    movzbl (%rdi,%rsi,4), %eax24; CHECK-NEXT:    retq25 26entry:27  %tmp2 = shl i64 %i, 228  %tmp4 = and i64 %tmp2, -5629  %tmp7 = getelementptr i8, ptr %X, i64 %tmp430  %tmp9 = load i8, ptr %tmp731  ret i8 %tmp932}33 34define i8 @t3(ptr %X, i64 %i) {35; CHECK-LABEL: t3:36; CHECK:       # %bb.0: # %entry37; CHECK-NEXT:    movl %esi, %eax38; CHECK-NEXT:    movzbl (%rdi,%rax,4), %eax39; CHECK-NEXT:    retq40 41entry:42  %tmp2 = shl i64 %i, 243  %tmp4 = and i64 %tmp2, 1717986918044  %tmp7 = getelementptr i8, ptr %X, i64 %tmp445  %tmp9 = load i8, ptr %tmp746  ret i8 %tmp947}48 49define i8 @t4(ptr %X, i64 %i) {50; CHECK-LABEL: t4:51; CHECK:       # %bb.0: # %entry52; CHECK-NEXT:    andl $-2, %esi53; CHECK-NEXT:    movzbl (%rdi,%rsi,4), %eax54; CHECK-NEXT:    retq55 56entry:57  %tmp2 = shl i64 %i, 258  %tmp4 = and i64 %tmp2, 1717986917659  %tmp7 = getelementptr i8, ptr %X, i64 %tmp460  %tmp9 = load i8, ptr %tmp761  ret i8 %tmp962}63 64define i8 @t5(ptr %X, i64 %i) {65; CHECK-LABEL: t5:66; CHECK:       # %bb.0: # %entry67; CHECK-NEXT:    andl $-250002, %esi # imm = 0xFFFC2F6E68; CHECK-NEXT:    movzbl (%rdi,%rsi,4), %eax69; CHECK-NEXT:    retq70 71entry:72  %tmp2 = shl i64 %i, 273  %tmp4 = and i64 %tmp2, 1717886917674  %tmp7 = getelementptr i8, ptr %X, i64 %tmp475  %tmp9 = load i8, ptr %tmp776  ret i8 %tmp977}78 79define i8 @t6(ptr %X, i32 %i) {80; CHECK-LABEL: t6:81; CHECK:       # %bb.0: # %entry82; CHECK-NEXT:    # kill: def $esi killed $esi def $rsi83; CHECK-NEXT:    andl $15, %esi84; CHECK-NEXT:    movzbl (%rdi,%rsi,4), %eax85; CHECK-NEXT:    retq86entry:87  %tmp2 = shl i32 %i, 288  %tmp3 = zext i32 %tmp2 to i6489  %tmp4 = and i64 %tmp3, 6090  %tmp7 = getelementptr i8, ptr %X, i64 %tmp491  %tmp9 = load i8, ptr %tmp792  ret i8 %tmp993}94 95define i32 @t7(<16 x i8> %a0, ptr %p0) {96; CHECK-LABEL: t7:97; CHECK:       # %bb.0:98; CHECK-NEXT:    pmovmskb %xmm0, %eax99; CHECK-NEXT:    shrl $3, %eax100; CHECK-NEXT:    movzbl (%rdi,%rax,4), %eax101; CHECK-NEXT:    retq102  %i = call i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8> %a0)103  %index = lshr i32 %i, 1104  %mask = and i32 %index, 16777212105  %val.ptr = getelementptr inbounds i8, ptr %p0, i32 %mask106  %val = load i8, ptr %val.ptr107  %ext = zext i8 %val to i32108  ret i32 %ext109}110declare i32 @llvm.x86.sse2.pmovmskb.128(<16 x i8>)111