brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · 1ef11eb Raw
59 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s3 4define zeroext i1 @f1(ptr %x) {5; CHECK-LABEL: f1:6; CHECK:       ## %bb.0: ## %entry7; CHECK-NEXT:    movzbl (%rdi), %eax8; CHECK-NEXT:    retq9 10entry:11  %0 = load i8, ptr %x, align 1, !range !0, !noundef !{}12  %tobool = trunc i8 %0 to i113  ret i1 %tobool14}15 16define zeroext i1 @f2(ptr %x) {17; CHECK-LABEL: f2:18; CHECK:       ## %bb.0: ## %entry19; CHECK-NEXT:    movzbl (%rdi), %eax20; CHECK-NEXT:    retq21 22entry:23  %0 = load i8, ptr %x, align 1, !range !0, !noundef !{}24  %tobool = icmp ne i8 %0, 025  ret i1 %tobool26}27 28!0 = !{i8 0, i8 2}29 30 31; check that we don't build a "trunc" from i1 to i1, which would assert.32define zeroext i1 @f3(i1 %x) {33; CHECK-LABEL: f3:34; CHECK:       ## %bb.0: ## %entry35; CHECK-NEXT:    movl %edi, %eax36; CHECK-NEXT:    andb $1, %al37; CHECK-NEXT:    ## kill: def $al killed $al killed $eax38; CHECK-NEXT:    retq39 40entry:41  %tobool = icmp ne i1 %x, 042  ret i1 %tobool43}44 45; check that we don't build a trunc when other bits are needed46define zeroext i1 @f4(i32 %x) {47; CHECK-LABEL: f4:48; CHECK:       ## %bb.0: ## %entry49; CHECK-NEXT:    movzwl %di, %eax50; CHECK-NEXT:    shrl $15, %eax51; CHECK-NEXT:    ## kill: def $al killed $al killed $eax52; CHECK-NEXT:    retq53 54entry:55  %y = and i32 %x, 3276856  %z = icmp ne i32 %y, 057  ret i1 %z58}59