@@ -254,28 +254,25 @@ define i64 @i64_nopoison(i64 %x) nounwind {
254254;
255255; SPARC-VIS3-LABEL: i64_nopoison:
256256; SPARC-VIS3: ! %bb.0:
257- ; SPARC-VIS3-NEXT: cmp %o1, 0
258- ; SPARC-VIS3-NEXT: bne .LBB2_2
259- ; SPARC-VIS3-NEXT: nop
260- ; SPARC-VIS3-NEXT: ! %bb.1:
261- ; SPARC-VIS3-NEXT: add %o0, -1, %o1
262- ; SPARC-VIS3-NEXT: andn %o1, %o0, %o0
257+ ; SPARC-VIS3-NEXT: add %o0, -1, %o2
258+ ; SPARC-VIS3-NEXT: andn %o2, %o0, %o0
263259; SPARC-VIS3-NEXT: srl %o0, 0, %o0
264260; SPARC-VIS3-NEXT: lzcnt %o0, %o0
265261; SPARC-VIS3-NEXT: add %o0, -32, %o0
266- ; SPARC-VIS3-NEXT: ba .LBB2_3
267- ; SPARC-VIS3-NEXT: mov 64, %o1
268- ; SPARC-VIS3-NEXT: .LBB2_2:
262+ ; SPARC-VIS3-NEXT: mov 64, %o2
263+ ; SPARC-VIS3-NEXT: sub %o2, %o0, %o2
269264; SPARC-VIS3-NEXT: add %o1, -1, %o0
270265; SPARC-VIS3-NEXT: andn %o0, %o1, %o0
271266; SPARC-VIS3-NEXT: srl %o0, 0, %o0
272267; SPARC-VIS3-NEXT: lzcnt %o0, %o0
273268; SPARC-VIS3-NEXT: add %o0, -32, %o0
274- ; SPARC-VIS3-NEXT: mov 32, %o1
275- ; SPARC-VIS3-NEXT: .LBB2_3:
276- ; SPARC-VIS3-NEXT: sub %o1, %o0, %o1
277- ; SPARC-VIS3-NEXT: retl
269+ ; SPARC-VIS3-NEXT: mov 32, %o3
270+ ; SPARC-VIS3-NEXT: sub %o3, %o0, %o0
271+ ; SPARC-VIS3-NEXT: cmp %o1, 0
272+ ; SPARC-VIS3-NEXT: movne %icc, %o0, %o2
278273; SPARC-VIS3-NEXT: mov %g0, %o0
274+ ; SPARC-VIS3-NEXT: retl
275+ ; SPARC-VIS3-NEXT: mov %o2, %o1
279276;
280277; SPARC64-LABEL: i64_nopoison:
281278; SPARC64: ! %bb.0:
@@ -376,28 +373,25 @@ define i64 @i64_poison(i64 %x) nounwind {
376373;
377374; SPARC-VIS3-LABEL: i64_poison:
378375; SPARC-VIS3: ! %bb.0:
379- ; SPARC-VIS3-NEXT: cmp %o1, 0
380- ; SPARC-VIS3-NEXT: bne .LBB3_2
381- ; SPARC-VIS3-NEXT: nop
382- ; SPARC-VIS3-NEXT: ! %bb.1:
383- ; SPARC-VIS3-NEXT: add %o0, -1, %o1
384- ; SPARC-VIS3-NEXT: andn %o1, %o0, %o0
376+ ; SPARC-VIS3-NEXT: add %o0, -1, %o2
377+ ; SPARC-VIS3-NEXT: andn %o2, %o0, %o0
385378; SPARC-VIS3-NEXT: srl %o0, 0, %o0
386379; SPARC-VIS3-NEXT: lzcnt %o0, %o0
387380; SPARC-VIS3-NEXT: add %o0, -32, %o0
388- ; SPARC-VIS3-NEXT: ba .LBB3_3
389- ; SPARC-VIS3-NEXT: mov 64, %o1
390- ; SPARC-VIS3-NEXT: .LBB3_2:
381+ ; SPARC-VIS3-NEXT: mov 64, %o2
382+ ; SPARC-VIS3-NEXT: sub %o2, %o0, %o2
391383; SPARC-VIS3-NEXT: add %o1, -1, %o0
392384; SPARC-VIS3-NEXT: andn %o0, %o1, %o0
393385; SPARC-VIS3-NEXT: srl %o0, 0, %o0
394386; SPARC-VIS3-NEXT: lzcnt %o0, %o0
395387; SPARC-VIS3-NEXT: add %o0, -32, %o0
396- ; SPARC-VIS3-NEXT: mov 32, %o1
397- ; SPARC-VIS3-NEXT: .LBB3_3:
398- ; SPARC-VIS3-NEXT: sub %o1, %o0, %o1
399- ; SPARC-VIS3-NEXT: retl
388+ ; SPARC-VIS3-NEXT: mov 32, %o3
389+ ; SPARC-VIS3-NEXT: sub %o3, %o0, %o0
390+ ; SPARC-VIS3-NEXT: cmp %o1, 0
391+ ; SPARC-VIS3-NEXT: movne %icc, %o0, %o2
400392; SPARC-VIS3-NEXT: mov %g0, %o0
393+ ; SPARC-VIS3-NEXT: retl
394+ ; SPARC-VIS3-NEXT: mov %o2, %o1
401395;
402396; SPARC64-LABEL: i64_poison:
403397; SPARC64: ! %bb.0:
0 commit comments