xref: /llvm-project/llvm/test/CodeGen/M68k/Control/cmp.ll (revision c4c9d4f306732c854fa88d2f30c1a22bb025d0c9)
1c23a780cSMin-Yih Hsu; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2718a9793SMin-Yih Hsu; RUN: llc < %s -mtriple=m68k -verify-machineinstrs | FileCheck %s
3c23a780cSMin-Yih Hsu
4cd0d11beSFangrui Songdefine i32 @test1(ptr %y) nounwind {
5c23a780cSMin-Yih Hsu; CHECK-LABEL: test1:
6c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0:
7c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %a0
8c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.l #0, (%a0)
9c23a780cSMin-Yih Hsu; CHECK-NEXT:    beq .LBB0_2
10c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.1: ; %cond_false
11*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #0, %d0
12c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
13c23a780cSMin-Yih Hsu; CHECK-NEXT:  .LBB0_2: ; %cond_true
14*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #1, %d0
15c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
16cd0d11beSFangrui Song %tmp = load i32, ptr %y  ; <i32> [#uses=1]
17c23a780cSMin-Yih Hsu %tmp.upgrd.1 = icmp eq i32 %tmp, 0  ; <i1> [#uses=1]
18c23a780cSMin-Yih Hsu br i1 %tmp.upgrd.1, label %cond_true, label %cond_false
19c23a780cSMin-Yih Hsu
20c23a780cSMin-Yih Hsucond_false:  ; preds = %0
21c23a780cSMin-Yih Hsu ret i32 0
22c23a780cSMin-Yih Hsu
23c23a780cSMin-Yih Hsucond_true:     ; preds = %0
24c23a780cSMin-Yih Hsu ret i32 1
25c23a780cSMin-Yih Hsu}
26c23a780cSMin-Yih Hsu
27cd0d11beSFangrui Songdefine i32 @test2(ptr %y) nounwind {
28c23a780cSMin-Yih Hsu; CHECK-LABEL: test2:
29c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0:
30c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %a0
31c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (%a0), %d0
32c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #536870911, %d0
33c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.l #0, %d0
34c23a780cSMin-Yih Hsu; CHECK-NEXT:    beq .LBB1_2
35c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.1: ; %cond_false
36*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #0, %d0
37c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
38c23a780cSMin-Yih Hsu; CHECK-NEXT:  .LBB1_2: ; %cond_true
39*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #1, %d0
40c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
41cd0d11beSFangrui Song %tmp = load i32, ptr %y  ; <i32> [#uses=1]
42c23a780cSMin-Yih Hsu %tmp1 = shl i32 %tmp, 3  ; <i32> [#uses=1]
43c23a780cSMin-Yih Hsu %tmp1.upgrd.2 = icmp eq i32 %tmp1, 0  ; <i1> [#uses=1]
44c23a780cSMin-Yih Hsu br i1 %tmp1.upgrd.2, label %cond_true, label %cond_false
45c23a780cSMin-Yih Hsu
46c23a780cSMin-Yih Hsucond_false:  ; preds = %0
47c23a780cSMin-Yih Hsu ret i32 0
48c23a780cSMin-Yih Hsu
49c23a780cSMin-Yih Hsucond_true:  ; preds = %0
50c23a780cSMin-Yih Hsu ret i32 1
51c23a780cSMin-Yih Hsu}
52c23a780cSMin-Yih Hsu
53cd0d11beSFangrui Songdefine i8 @test2b(ptr %y) nounwind {
54c23a780cSMin-Yih Hsu; CHECK-LABEL: test2b:
55c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0:
56c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %a0
57c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.b (%a0), %d0
58c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.b #31, %d0
59c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.b #0, %d0
60c23a780cSMin-Yih Hsu; CHECK-NEXT:    beq .LBB2_2
61c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.1: ; %cond_false
62*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #0, %d0
63c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
64c23a780cSMin-Yih Hsu; CHECK-NEXT:  .LBB2_2: ; %cond_true
65*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #1, %d0
66c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
67cd0d11beSFangrui Song %tmp = load i8, ptr %y  ; <i8> [#uses=1]
68c23a780cSMin-Yih Hsu %tmp1 = shl i8 %tmp, 3  ; <i8> [#uses=1]
69c23a780cSMin-Yih Hsu %tmp1.upgrd.2 = icmp eq i8 %tmp1, 0  ; <i1> [#uses=1]
70c23a780cSMin-Yih Hsu br i1 %tmp1.upgrd.2, label %cond_true, label %cond_false
71c23a780cSMin-Yih Hsu
72c23a780cSMin-Yih Hsucond_false:  ; preds = %0
73c23a780cSMin-Yih Hsu ret i8 0
74c23a780cSMin-Yih Hsu
75c23a780cSMin-Yih Hsucond_true:  ; preds = %0
76c23a780cSMin-Yih Hsu ret i8 1
77c23a780cSMin-Yih Hsu}
78c23a780cSMin-Yih Hsu
79c23a780cSMin-Yih Hsudefine i64 @test3(i64 %x) nounwind {
80c23a780cSMin-Yih Hsu; CHECK-LABEL: test3:
81c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0:
82c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (8,%sp), %d0
83c23a780cSMin-Yih Hsu; CHECK-NEXT:    or.l (4,%sp), %d0
84c23a780cSMin-Yih Hsu; CHECK-NEXT:    seq %d0
85c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l %d0, %d1
86c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d1
87*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #0, %d0
88c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
89c23a780cSMin-Yih Hsu  %t = icmp eq i64 %x, 0
90c23a780cSMin-Yih Hsu  %r = zext i1 %t to i64
91c23a780cSMin-Yih Hsu  ret i64 %r
92c23a780cSMin-Yih Hsu}
93c23a780cSMin-Yih Hsu
94c23a780cSMin-Yih Hsudefine i64 @test4(i64 %x) nounwind {
95c23a780cSMin-Yih Hsu; CHECK-LABEL: test4:
96c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0:
97657bb726SMin-Yih Hsu; CHECK-NEXT:    suba.l #4, %sp
98c23a780cSMin-Yih Hsu; CHECK-NEXT:    movem.l %d2, (0,%sp) ; 8-byte Folded Spill
99c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (8,%sp), %d1
100*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #0, %d0
101c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (12,%sp), %d2
102c23a780cSMin-Yih Hsu; CHECK-NEXT:    sub.l #1, %d2
103c23a780cSMin-Yih Hsu; CHECK-NEXT:    subx.l %d0, %d1
104c23a780cSMin-Yih Hsu; CHECK-NEXT:    slt %d1
105c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d1
106c23a780cSMin-Yih Hsu; CHECK-NEXT:    movem.l (0,%sp), %d2 ; 8-byte Folded Reload
107657bb726SMin-Yih Hsu; CHECK-NEXT:    adda.l #4, %sp
108c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
109c23a780cSMin-Yih Hsu  %t = icmp slt i64 %x, 1
110c23a780cSMin-Yih Hsu  %r = zext i1 %t to i64
111c23a780cSMin-Yih Hsu  ret i64 %r
112c23a780cSMin-Yih Hsu}
113c23a780cSMin-Yih Hsu
114c23a780cSMin-Yih Hsudefine i32 @test6() nounwind align 2 {
115c23a780cSMin-Yih Hsu; CHECK-LABEL: test6:
116c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0:
117657bb726SMin-Yih Hsu; CHECK-NEXT:    suba.l #20, %sp
118c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (12,%sp), %d0
119c23a780cSMin-Yih Hsu; CHECK-NEXT:    or.l (8,%sp), %d0
120c23a780cSMin-Yih Hsu; CHECK-NEXT:    beq .LBB5_1
121c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.2: ; %F
122*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #0, %d0
123657bb726SMin-Yih Hsu; CHECK-NEXT:    adda.l #20, %sp
124c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
125c23a780cSMin-Yih Hsu; CHECK-NEXT:  .LBB5_1: ; %T
126*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #1, %d0
127657bb726SMin-Yih Hsu; CHECK-NEXT:    adda.l #20, %sp
128c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
129c23a780cSMin-Yih Hsu  %A = alloca {i64, i64}, align 8
130cd0d11beSFangrui Song  %B = getelementptr inbounds {i64, i64}, ptr %A, i64 0, i32 1
131cd0d11beSFangrui Song  %C = load i64, ptr %B
132c23a780cSMin-Yih Hsu  %D = icmp eq i64 %C, 0
133c23a780cSMin-Yih Hsu  br i1 %D, label %T, label %F
134c23a780cSMin-Yih HsuT:
135c23a780cSMin-Yih Hsu  ret i32 1
136c23a780cSMin-Yih Hsu
137c23a780cSMin-Yih HsuF:
138c23a780cSMin-Yih Hsu  ret i32 0
139c23a780cSMin-Yih Hsu}
140c23a780cSMin-Yih Hsu
141c23a780cSMin-Yih Hsudefine i32 @test7(i64 %res) nounwind {
142c23a780cSMin-Yih Hsu; CHECK-LABEL: test7:
143c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0: ; %entry
144c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.l #0, (4,%sp)
145c23a780cSMin-Yih Hsu; CHECK-NEXT:    seq %d0
146c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d0
147c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
148c23a780cSMin-Yih Hsuentry:
149c23a780cSMin-Yih Hsu  %lnot = icmp ult i64 %res, 4294967296
150c23a780cSMin-Yih Hsu  %lnot.ext = zext i1 %lnot to i32
151c23a780cSMin-Yih Hsu  ret i32 %lnot.ext
152c23a780cSMin-Yih Hsu}
153c23a780cSMin-Yih Hsu
154c23a780cSMin-Yih Hsudefine i32 @test8(i64 %res) nounwind {
155c23a780cSMin-Yih Hsu; CHECK-LABEL: test8:
156c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0: ; %entry
157c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %d0
158c23a780cSMin-Yih Hsu; CHECK-NEXT:    sub.l #3, %d0
159c23a780cSMin-Yih Hsu; CHECK-NEXT:    scs %d0
160c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d0
161c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
162c23a780cSMin-Yih Hsuentry:
163c23a780cSMin-Yih Hsu  %lnot = icmp ult i64 %res, 12884901888
164c23a780cSMin-Yih Hsu  %lnot.ext = zext i1 %lnot to i32
165c23a780cSMin-Yih Hsu  ret i32 %lnot.ext
166c23a780cSMin-Yih Hsu}
167c23a780cSMin-Yih Hsu
168c23a780cSMin-Yih Hsudefine i32 @test11(i64 %l) nounwind {
169c23a780cSMin-Yih Hsu; CHECK-LABEL: test11:
170c23a780cSMin-Yih Hsu; CHECK:       ; %bb.0: ; %entry
171c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %d0
172c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #-32768, %d0
17313d59a8eSSimon Pilgrim; CHECK-NEXT:    sub.l #32768, %d0
174c23a780cSMin-Yih Hsu; CHECK-NEXT:    seq %d0
175c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d0
176c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
177c23a780cSMin-Yih Hsuentry:
178c23a780cSMin-Yih Hsu  %shr.mask = and i64 %l, -140737488355328
179c23a780cSMin-Yih Hsu  %cmp = icmp eq i64 %shr.mask, 140737488355328
180c23a780cSMin-Yih Hsu  %conv = zext i1 %cmp to i32
181c23a780cSMin-Yih Hsu  ret i32 %conv
182c23a780cSMin-Yih Hsu}
183c23a780cSMin-Yih Hsu
184c23a780cSMin-Yih Hsudefine i32 @test13(i32 %mask, i32 %base, i32 %intra) {
185c23a780cSMin-Yih Hsu; CHECK-LABEL: test13:
186c23a780cSMin-Yih Hsu; CHECK:         .cfi_startproc
187c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.0:
188c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.b (7,%sp), %d0
189c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.b #8, %d0
190c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.b #0, %d0
191c23a780cSMin-Yih Hsu; CHECK-NEXT:    bne .LBB9_1
192c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.2:
193c23a780cSMin-Yih Hsu; CHECK-NEXT:    lea (8,%sp), %a0
194c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (%a0), %d0
195c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
196c23a780cSMin-Yih Hsu; CHECK-NEXT:  .LBB9_1:
197c23a780cSMin-Yih Hsu; CHECK-NEXT:    lea (12,%sp), %a0
198c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (%a0), %d0
199c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
200c23a780cSMin-Yih Hsu  %and = and i32 %mask, 8
201c23a780cSMin-Yih Hsu  %tobool = icmp ne i32 %and, 0
202c23a780cSMin-Yih Hsu  %cond = select i1 %tobool, i32 %intra, i32 %base
203c23a780cSMin-Yih Hsu  ret i32 %cond
204c23a780cSMin-Yih Hsu}
205c23a780cSMin-Yih Hsu
206c23a780cSMin-Yih Hsudefine i32 @test14(i32 %mask, i32 %base, i32 %intra) #0 {
207c23a780cSMin-Yih Hsu; CHECK-LABEL: test14:
208c23a780cSMin-Yih Hsu; CHECK:         .cfi_startproc
209c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.0:
210c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %d0
211c23a780cSMin-Yih Hsu; CHECK-NEXT:    lsr.l #7, %d0
212c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.l #0, %d0
213c23a780cSMin-Yih Hsu; CHECK-NEXT:    bpl .LBB10_1
214c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.2:
215c23a780cSMin-Yih Hsu; CHECK-NEXT:    lea (8,%sp), %a0
216c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (%a0), %d0
217c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
218c23a780cSMin-Yih Hsu; CHECK-NEXT:  .LBB10_1:
219c23a780cSMin-Yih Hsu; CHECK-NEXT:    lea (12,%sp), %a0
220c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (%a0), %d0
221c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
222c23a780cSMin-Yih Hsu  %s = lshr i32 %mask, 7
223c23a780cSMin-Yih Hsu  %tobool = icmp sgt i32 %s, -1
224c23a780cSMin-Yih Hsu  %cond = select i1 %tobool, i32 %intra, i32 %base
225c23a780cSMin-Yih Hsu  ret i32 %cond
226c23a780cSMin-Yih Hsu}
227c23a780cSMin-Yih Hsu
228c23a780cSMin-Yih Hsudefine zeroext i1 @test15(i32 %bf.load, i32 %n) {
229c23a780cSMin-Yih Hsu; CHECK-LABEL: test15:
230c23a780cSMin-Yih Hsu; CHECK:         .cfi_startproc
231c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.0:
232*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #16, %d0
233c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %d1
234c23a780cSMin-Yih Hsu; CHECK-NEXT:    lsr.l %d0, %d1
235c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l %d1, %d0
236c23a780cSMin-Yih Hsu; CHECK-NEXT:    sub.l (8,%sp), %d0
237c23a780cSMin-Yih Hsu; CHECK-NEXT:    scc %d0
238c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.l #0, %d1
239c23a780cSMin-Yih Hsu; CHECK-NEXT:    seq %d1
240c23a780cSMin-Yih Hsu; CHECK-NEXT:    or.b %d0, %d1
241c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l %d1, %d0
242c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d0
243c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
244c23a780cSMin-Yih Hsu  %bf.lshr = lshr i32 %bf.load, 16
245c23a780cSMin-Yih Hsu  %cmp2 = icmp eq i32 %bf.lshr, 0
246c23a780cSMin-Yih Hsu  %cmp5 = icmp uge i32 %bf.lshr, %n
247c23a780cSMin-Yih Hsu  %.cmp5 = or i1 %cmp2, %cmp5
248c23a780cSMin-Yih Hsu  ret i1 %.cmp5
249c23a780cSMin-Yih Hsu}
250c23a780cSMin-Yih Hsu
251c23a780cSMin-Yih Hsudefine i8 @test16(i16 signext %L) {
252c23a780cSMin-Yih Hsu; CHECK-LABEL: test16:
253c23a780cSMin-Yih Hsu; CHECK:         .cfi_startproc
254c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.0:
255*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #15, %d1
256c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.w (6,%sp), %d0
257c23a780cSMin-Yih Hsu; CHECK-NEXT:    lsr.w %d1, %d0
258c23a780cSMin-Yih Hsu; CHECK-NEXT:    eori.b #1, %d0
259c23a780cSMin-Yih Hsu; CHECK-NEXT:    ; kill: def $bd0 killed $bd0 killed $wd0
260c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
261c23a780cSMin-Yih Hsu  %lshr  = lshr i16 %L, 15
262c23a780cSMin-Yih Hsu  %trunc = trunc i16 %lshr to i8
263c23a780cSMin-Yih Hsu  %not   = xor i8 %trunc, 1
264c23a780cSMin-Yih Hsu  ret i8 %not
265c23a780cSMin-Yih Hsu}
266c23a780cSMin-Yih Hsu
267c23a780cSMin-Yih Hsudefine i8 @test18(i64 %L) {
268c23a780cSMin-Yih Hsu; CHECK-LABEL: test18:
269c23a780cSMin-Yih Hsu; CHECK:         .cfi_startproc
270c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.0:
271*c4c9d4f3SPeter Lafreniere; CHECK-NEXT:    moveq #31, %d1
272c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (4,%sp), %d0
273c23a780cSMin-Yih Hsu; CHECK-NEXT:    lsr.l %d1, %d0
274c23a780cSMin-Yih Hsu; CHECK-NEXT:    eori.b #1, %d0
275c23a780cSMin-Yih Hsu; CHECK-NEXT:    ; kill: def $bd0 killed $bd0 killed $d0
276c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
277c23a780cSMin-Yih Hsu  %lshr  = lshr i64 %L, 63
278c23a780cSMin-Yih Hsu  %trunc = trunc i64 %lshr to i8
279c23a780cSMin-Yih Hsu  %not   = xor i8 %trunc, 1
280c23a780cSMin-Yih Hsu  ret i8 %not
281c23a780cSMin-Yih Hsu}
282c23a780cSMin-Yih Hsu
283c23a780cSMin-Yih Hsu@d = global i8 0, align 1
284c23a780cSMin-Yih Hsu
285cd0d11beSFangrui Songdefine void @test20(i32 %bf.load, i8 %x1, ptr %b_addr) {
286c23a780cSMin-Yih Hsu; CHECK-LABEL: test20:
287c23a780cSMin-Yih Hsu; CHECK:         .cfi_startproc
288c23a780cSMin-Yih Hsu; CHECK-NEXT:  ; %bb.0:
289657bb726SMin-Yih Hsu; CHECK-NEXT:    suba.l #4, %sp
290c23a780cSMin-Yih Hsu; CHECK-NEXT:    .cfi_def_cfa_offset -8
291c23a780cSMin-Yih Hsu; CHECK-NEXT:    movem.l %d2, (0,%sp) ; 8-byte Folded Spill
292c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l #16777215, %d0
293c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l (8,%sp), %d0
294c23a780cSMin-Yih Hsu; CHECK-NEXT:    sne %d1
295c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d1
296c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.l (16,%sp), %a0
297c23a780cSMin-Yih Hsu; CHECK-NEXT:    move.b (15,%sp), %d2
298c23a780cSMin-Yih Hsu; CHECK-NEXT:    and.l #255, %d2
29908f2b0dcSMin-Yih Hsu; CHECK-NEXT:    add.l %d1, %d2
300c23a780cSMin-Yih Hsu; CHECK-NEXT:    sne (%a0)
301c23a780cSMin-Yih Hsu; CHECK-NEXT:    cmpi.l #0, %d0
302c23a780cSMin-Yih Hsu; CHECK-NEXT:    lea (d,%pc), %a0
303c23a780cSMin-Yih Hsu; CHECK-NEXT:    sne (%a0)
304c23a780cSMin-Yih Hsu; CHECK-NEXT:    movem.l (0,%sp), %d2 ; 8-byte Folded Reload
305657bb726SMin-Yih Hsu; CHECK-NEXT:    adda.l #4, %sp
306c23a780cSMin-Yih Hsu; CHECK-NEXT:    rts
307c23a780cSMin-Yih Hsu  %bf.shl = shl i32 %bf.load, 8
308c23a780cSMin-Yih Hsu  %bf.ashr = ashr exact i32 %bf.shl, 8
309c23a780cSMin-Yih Hsu  %tobool4 = icmp ne i32 %bf.ashr, 0
310c23a780cSMin-Yih Hsu  %conv = zext i1 %tobool4 to i32
311c23a780cSMin-Yih Hsu  %conv6 = zext i8 %x1 to i32
312c23a780cSMin-Yih Hsu  %add = add nuw nsw i32 %conv, %conv6
313c23a780cSMin-Yih Hsu  %tobool7 = icmp ne i32 %add, 0
314c23a780cSMin-Yih Hsu  %frombool = zext i1 %tobool7 to i8
315cd0d11beSFangrui Song  store i8 %frombool, ptr %b_addr, align 1
316c23a780cSMin-Yih Hsu  %tobool14 = icmp ne i32 %bf.shl, 0
317c23a780cSMin-Yih Hsu  %frombool15 = zext i1 %tobool14 to i8
318cd0d11beSFangrui Song  store i8 %frombool15, ptr @d, align 1
319c23a780cSMin-Yih Hsu  ret void
320c23a780cSMin-Yih Hsu}
321