[Reland][Runtimes] Merge 'compile_commands.json' files from runtimes build (#116303)
[llvm-project.git] / llvm / test / CodeGen / X86 / pr12360.ll
blob1ef11ebc9794e84206633e07254576c73f2a2f2a
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=x86_64-apple-darwin | FileCheck %s
4 define zeroext i1 @f1(ptr %x) {
5 ; CHECK-LABEL: f1:
6 ; CHECK:       ## %bb.0: ## %entry
7 ; CHECK-NEXT:    movzbl (%rdi), %eax
8 ; CHECK-NEXT:    retq
10 entry:
11   %0 = load i8, ptr %x, align 1, !range !0, !noundef !{}
12   %tobool = trunc i8 %0 to i1
13   ret i1 %tobool
16 define zeroext i1 @f2(ptr %x) {
17 ; CHECK-LABEL: f2:
18 ; CHECK:       ## %bb.0: ## %entry
19 ; CHECK-NEXT:    movzbl (%rdi), %eax
20 ; CHECK-NEXT:    retq
22 entry:
23   %0 = load i8, ptr %x, align 1, !range !0, !noundef !{}
24   %tobool = icmp ne i8 %0, 0
25   ret i1 %tobool
28 !0 = !{i8 0, i8 2}
31 ; check that we don't build a "trunc" from i1 to i1, which would assert.
32 define zeroext i1 @f3(i1 %x) {
33 ; CHECK-LABEL: f3:
34 ; CHECK:       ## %bb.0: ## %entry
35 ; CHECK-NEXT:    movl %edi, %eax
36 ; CHECK-NEXT:    andb $1, %al
37 ; CHECK-NEXT:    ## kill: def $al killed $al killed $eax
38 ; CHECK-NEXT:    retq
40 entry:
41   %tobool = icmp ne i1 %x, 0
42   ret i1 %tobool
45 ; check that we don't build a trunc when other bits are needed
46 define zeroext i1 @f4(i32 %x) {
47 ; CHECK-LABEL: f4:
48 ; CHECK:       ## %bb.0: ## %entry
49 ; CHECK-NEXT:    movzwl %di, %eax
50 ; CHECK-NEXT:    shrl $15, %eax
51 ; CHECK-NEXT:    ## kill: def $al killed $al killed $eax
52 ; CHECK-NEXT:    retq
54 entry:
55   %y = and i32 %x, 32768
56   %z = icmp ne i32 %y, 0
57   ret i1 %z