@@ -277,36 +277,42 @@ define i8 @br.i1(i1) {
277277; Z80: ; %bb.0:
278278; Z80-NEXT: ld iy, 0
279279; Z80-NEXT: add iy, sp
280- ; Z80-NEXT: xor a, a
281280; Z80-NEXT: bit 0, (iy + 2)
282281; Z80-NEXT: jr z, BB10_2
283282; Z80-NEXT: ; %bb.1:
284283; Z80-NEXT: ld a, 1
284+ ; Z80-NEXT: ret
285+ ; Z80-NEXT: private BB10_2
285286; Z80-NEXT: BB10_2:
287+ ; Z80-NEXT: xor a, a
286288; Z80-NEXT: ret
287289;
288290; EZ80-CODE16-LABEL: br.i1:
289291; EZ80-CODE16: ; %bb.0:
290292; EZ80-CODE16-NEXT: ld iy, 0
291293; EZ80-CODE16-NEXT: add iy, sp
292- ; EZ80-CODE16-NEXT: xor a, a
293294; EZ80-CODE16-NEXT: bit 0, (iy + 2)
294295; EZ80-CODE16-NEXT: jr z, BB10_2
295296; EZ80-CODE16-NEXT: ; %bb.1:
296297; EZ80-CODE16-NEXT: ld a, 1
298+ ; EZ80-CODE16-NEXT: ret
299+ ; EZ80-CODE16-NEXT: private BB10_2
297300; EZ80-CODE16-NEXT: BB10_2:
301+ ; EZ80-CODE16-NEXT: xor a, a
298302; EZ80-CODE16-NEXT: ret
299303;
300304; EZ80-LABEL: br.i1:
301305; EZ80: ; %bb.0:
302306; EZ80-NEXT: ld iy, 0
303307; EZ80-NEXT: add iy, sp
304- ; EZ80-NEXT: xor a, a
305308; EZ80-NEXT: bit 0, (iy + 3)
306309; EZ80-NEXT: jr z, BB10_2
307310; EZ80-NEXT: ; %bb.1:
308311; EZ80-NEXT: ld a, 1
312+ ; EZ80-NEXT: ret
313+ ; EZ80-NEXT: private BB10_2
309314; EZ80-NEXT: BB10_2:
315+ ; EZ80-NEXT: xor a, a
310316; EZ80-NEXT: ret
311317 br i1 %0 , label %2 , label %3
312318 ret i8 1
@@ -326,6 +332,7 @@ define i8 @switch(i8) {
326332; Z80-NEXT: ; %bb.1:
327333; Z80-NEXT: ld a, -1
328334; Z80-NEXT: ret
335+ ; Z80-NEXT: private BB11_2
329336; Z80-NEXT: BB11_2:
330337; Z80-NEXT: ld hl, JTI11_0
331338; Z80-NEXT: add hl, de
@@ -337,18 +344,28 @@ define i8 @switch(i8) {
337344; Z80-NEXT: ex de, hl
338345; Z80-NEXT: pop de
339346; Z80-NEXT: jp (hl)
347+ ; Z80-NEXT: private BB11_3
340348; Z80-NEXT: BB11_3:
341349; Z80-NEXT: ld a, d
342350; Z80-NEXT: ret
351+ ; Z80-NEXT: private BB11_4
343352; Z80-NEXT: BB11_4:
344353; Z80-NEXT: ld a, 2
345354; Z80-NEXT: ret
355+ ; Z80-NEXT: private BB11_5
346356; Z80-NEXT: BB11_5:
347357; Z80-NEXT: ld a, 3
348358; Z80-NEXT: ret
359+ ; Z80-NEXT: private BB11_6
349360; Z80-NEXT: BB11_6:
350361; Z80-NEXT: ld a, 1
351362; Z80-NEXT: ret
363+ ; Z80-NEXT: .section .rodata,"a",@progbits
364+ ; Z80-NEXT: JTI11_0:
365+ ; Z80-NEXT: dw BB11_3
366+ ; Z80-NEXT: dw BB11_6
367+ ; Z80-NEXT: dw BB11_4
368+ ; Z80-NEXT: dw BB11_5
352369;
353370; EZ80-CODE16-LABEL: switch:
354371; EZ80-CODE16: ; %bb.0:
@@ -362,57 +379,78 @@ define i8 @switch(i8) {
362379; EZ80-CODE16-NEXT: ; %bb.1:
363380; EZ80-CODE16-NEXT: ld a, -1
364381; EZ80-CODE16-NEXT: ret
382+ ; EZ80-CODE16-NEXT: private BB11_2
365383; EZ80-CODE16-NEXT: BB11_2:
366384; EZ80-CODE16-NEXT: ld hl, JTI11_0
367385; EZ80-CODE16-NEXT: add hl, de
368386; EZ80-CODE16-NEXT: add hl, de
369387; EZ80-CODE16-NEXT: ld hl, (hl)
370388; EZ80-CODE16-NEXT: jp (hl)
389+ ; EZ80-CODE16-NEXT: private BB11_3
371390; EZ80-CODE16-NEXT: BB11_3:
372391; EZ80-CODE16-NEXT: ld a, d
373392; EZ80-CODE16-NEXT: ret
393+ ; EZ80-CODE16-NEXT: private BB11_4
374394; EZ80-CODE16-NEXT: BB11_4:
375395; EZ80-CODE16-NEXT: ld a, 2
376396; EZ80-CODE16-NEXT: ret
397+ ; EZ80-CODE16-NEXT: private BB11_5
377398; EZ80-CODE16-NEXT: BB11_5:
378399; EZ80-CODE16-NEXT: ld a, 3
379400; EZ80-CODE16-NEXT: ret
401+ ; EZ80-CODE16-NEXT: private BB11_6
380402; EZ80-CODE16-NEXT: BB11_6:
381403; EZ80-CODE16-NEXT: ld a, 1
382404; EZ80-CODE16-NEXT: ret
405+ ; EZ80-CODE16-NEXT: .section .rodata,"a",@progbits
406+ ; EZ80-CODE16-NEXT: JTI11_0:
407+ ; EZ80-CODE16-NEXT: dw BB11_3
408+ ; EZ80-CODE16-NEXT: dw BB11_6
409+ ; EZ80-CODE16-NEXT: dw BB11_4
410+ ; EZ80-CODE16-NEXT: dw BB11_5
383411;
384412; EZ80-LABEL: switch:
385413; EZ80: ; %bb.0:
386414; EZ80-NEXT: ld iy, 0
387415; EZ80-NEXT: add iy, sp
388416; EZ80-NEXT: ld a, (iy + 3)
389- ; EZ80-NEXT: ld e, 0
390- ; EZ80-NEXT: ld bc, 0
417+ ; EZ80-NEXT: ld de, 0
391418; EZ80-NEXT: cp a, 4
392419; EZ80-NEXT: jr c, BB11_2
393420; EZ80-NEXT: ; %bb.1:
394421; EZ80-NEXT: ld a, -1
395422; EZ80-NEXT: ret
423+ ; EZ80-NEXT: private BB11_2
396424; EZ80-NEXT: BB11_2:
397- ; EZ80-NEXT: ld c , a
425+ ; EZ80-NEXT: ld e , a
398426; EZ80-NEXT: ld hl, JTI11_0
399- ; EZ80-NEXT: add hl, bc
400- ; EZ80-NEXT: add hl, bc
401- ; EZ80-NEXT: add hl, bc
427+ ; EZ80-NEXT: add hl, de
428+ ; EZ80-NEXT: add hl, de
429+ ; EZ80-NEXT: add hl, de
402430; EZ80-NEXT: ld hl, (hl)
403431; EZ80-NEXT: jp (hl)
432+ ; EZ80-NEXT: private BB11_3
404433; EZ80-NEXT: BB11_3:
405- ; EZ80-NEXT: ld a, e
434+ ; EZ80-NEXT: xor a, a
406435; EZ80-NEXT: ret
436+ ; EZ80-NEXT: private BB11_4
407437; EZ80-NEXT: BB11_4:
408438; EZ80-NEXT: ld a, 2
409439; EZ80-NEXT: ret
440+ ; EZ80-NEXT: private BB11_5
410441; EZ80-NEXT: BB11_5:
411442; EZ80-NEXT: ld a, 3
412443; EZ80-NEXT: ret
444+ ; EZ80-NEXT: private BB11_6
413445; EZ80-NEXT: BB11_6:
414446; EZ80-NEXT: ld a, 1
415447; EZ80-NEXT: ret
448+ ; EZ80-NEXT: .section .rodata,"a",@progbits
449+ ; EZ80-NEXT: JTI11_0:
450+ ; EZ80-NEXT: dl BB11_3
451+ ; EZ80-NEXT: dl BB11_6
452+ ; EZ80-NEXT: dl BB11_4
453+ ; EZ80-NEXT: dl BB11_5
416454 switch i8 %0 , label %2 [ i8 0 , label %3
417455 i8 1 , label %4
418456 i8 2 , label %5
@@ -431,35 +469,44 @@ define i8 @indirectbr(i8*) {
431469; Z80-NEXT: add iy, sp
432470; Z80-NEXT: ld l, (iy + 2)
433471; Z80-NEXT: ld h, (iy + 3)
434- ; Z80-NEXT: xor a, a
435472; Z80-NEXT: jp (hl)
473+ ; Z80-NEXT: private BB12_1
436474; Z80-NEXT: BB12_1:
437475; Z80-NEXT: ld a, 1
476+ ; Z80-NEXT: ret
477+ ; Z80-NEXT: private BB12_2
438478; Z80-NEXT: BB12_2:
479+ ; Z80-NEXT: xor a, a
439480; Z80-NEXT: ret
440481;
441482; EZ80-CODE16-LABEL: indirectbr:
442483; EZ80-CODE16: ; %bb.0:
443484; EZ80-CODE16-NEXT: ld iy, 0
444485; EZ80-CODE16-NEXT: add iy, sp
445486; EZ80-CODE16-NEXT: ld hl, (iy + 2)
446- ; EZ80-CODE16-NEXT: xor a, a
447487; EZ80-CODE16-NEXT: jp (hl)
488+ ; EZ80-CODE16-NEXT: private BB12_1
448489; EZ80-CODE16-NEXT: BB12_1:
449490; EZ80-CODE16-NEXT: ld a, 1
491+ ; EZ80-CODE16-NEXT: ret
492+ ; EZ80-CODE16-NEXT: private BB12_2
450493; EZ80-CODE16-NEXT: BB12_2:
494+ ; EZ80-CODE16-NEXT: xor a, a
451495; EZ80-CODE16-NEXT: ret
452496;
453497; EZ80-LABEL: indirectbr:
454498; EZ80: ; %bb.0:
455499; EZ80-NEXT: ld iy, 0
456500; EZ80-NEXT: add iy, sp
457501; EZ80-NEXT: ld hl, (iy + 3)
458- ; EZ80-NEXT: xor a, a
459502; EZ80-NEXT: jp (hl)
503+ ; EZ80-NEXT: private BB12_1
460504; EZ80-NEXT: BB12_1:
461505; EZ80-NEXT: ld a, 1
506+ ; EZ80-NEXT: ret
507+ ; EZ80-NEXT: private BB12_2
462508; EZ80-NEXT: BB12_2:
509+ ; EZ80-NEXT: xor a, a
463510; EZ80-NEXT: ret
464511 indirectbr i8* %0 , [label %2 , label %3 ]
465512 ret i8 1
0 commit comments