File tree Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Expand file tree Collapse file tree 1 file changed +29
-0
lines changed Original file line number Diff line number Diff line change
1
+ ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2
+ ; RUN: llc < %s -mtriple=x86_64-unknown-linux-gnu | FileCheck %s
3
+
4
+ ; The and with -9 has multiple users which prevents
5
+ ; SimplifyDemandedBits from touching it. The truncate only
6
+ ; demands the lower 8 bits. X86ISelDAGToDAG.cpp wants form
7
+ ; a test instruction from the icmp+trunc+and, but needs to
8
+ ; mask the -9 to 8 bits since SimplifyDemandedBits didn't.
9
+
10
+ define i32 @foo (i16 signext %0 , i32 %1 , i32* nocapture %2 ) {
11
+ ; CHECK-LABEL: foo:
12
+ ; CHECK: # %bb.0:
13
+ ; CHECK-NEXT: incl %edi
14
+ ; CHECK-NEXT: movl %edi, %eax
15
+ ; CHECK-NEXT: andl $65527, %eax # imm = 0xFFF7
16
+ ; CHECK-NEXT: movl %eax, (%rdx)
17
+ ; CHECK-NEXT: xorl %eax, %eax
18
+ ; CHECK-NEXT: testl $-9, %edi
19
+ ; CHECK-NEXT: cmovel %esi, %eax
20
+ ; CHECK-NEXT: retq
21
+ %4 = add i16 %0 , 1
22
+ %5 = and i16 %4 , -9
23
+ %6 = zext i16 %5 to i32
24
+ store i32 %6 , i32* %2 , align 4
25
+ %7 = trunc i16 %5 to i8
26
+ %8 = icmp eq i8 %7 , 0
27
+ %9 = select i1 %8 , i32 %1 , i32 0
28
+ ret i32 %9
29
+ }
You can’t perform that action at this time.
0 commit comments