@@ -2768,47 +2768,23 @@ define i8 @ctlz.i8(i8) {
2768
2768
; Z80: ; %bb.0:
2769
2769
; Z80-NEXT: ld iy, 0
2770
2770
; Z80-NEXT: add iy, sp
2771
- ; Z80-NEXT: ld l, (iy + 2)
2772
- ; Z80-NEXT: ld a, l
2773
- ; Z80-NEXT: or a, a
2774
- ; Z80-NEXT: jr nz, BB31_2
2775
- ; Z80-NEXT: ; %bb.1:
2776
- ; Z80-NEXT: ld a, 8
2777
- ; Z80-NEXT: ret
2778
- ; Z80-NEXT: BB31_2: ; %cond.false
2779
- ; Z80-NEXT: ld a, l
2771
+ ; Z80-NEXT: ld a, (iy + 2)
2780
2772
; Z80-NEXT: call __bctlz
2781
2773
; Z80-NEXT: ret
2782
2774
;
2783
2775
; EZ80-CODE16-LABEL: ctlz.i8:
2784
2776
; EZ80-CODE16: ; %bb.0:
2785
2777
; EZ80-CODE16-NEXT: ld iy, 0
2786
2778
; EZ80-CODE16-NEXT: add iy, sp
2787
- ; EZ80-CODE16-NEXT: ld l, (iy + 2)
2788
- ; EZ80-CODE16-NEXT: ld a, l
2789
- ; EZ80-CODE16-NEXT: or a, a
2790
- ; EZ80-CODE16-NEXT: jr nz, BB31_2
2791
- ; EZ80-CODE16-NEXT: ; %bb.1:
2792
- ; EZ80-CODE16-NEXT: ld a, 8
2793
- ; EZ80-CODE16-NEXT: ret
2794
- ; EZ80-CODE16-NEXT: BB31_2: ; %cond.false
2795
- ; EZ80-CODE16-NEXT: ld a, l
2779
+ ; EZ80-CODE16-NEXT: ld a, (iy + 2)
2796
2780
; EZ80-CODE16-NEXT: call __bctlz
2797
2781
; EZ80-CODE16-NEXT: ret
2798
2782
;
2799
2783
; EZ80-LABEL: ctlz.i8:
2800
2784
; EZ80: ; %bb.0:
2801
2785
; EZ80-NEXT: ld iy, 0
2802
2786
; EZ80-NEXT: add iy, sp
2803
- ; EZ80-NEXT: ld l, (iy + 3)
2804
- ; EZ80-NEXT: ld a, l
2805
- ; EZ80-NEXT: or a, a
2806
- ; EZ80-NEXT: jr nz, BB31_2
2807
- ; EZ80-NEXT: ; %bb.1:
2808
- ; EZ80-NEXT: ld a, 8
2809
- ; EZ80-NEXT: ret
2810
- ; EZ80-NEXT: BB31_2: ; %cond.false
2811
- ; EZ80-NEXT: ld a, l
2787
+ ; EZ80-NEXT: ld a, (iy + 3)
2812
2788
; EZ80-NEXT: call __bctlz
2813
2789
; EZ80-NEXT: ret
2814
2790
call i8 @llvm.ctlz.i8 (i8 %0 )
@@ -2822,14 +2798,6 @@ define i16 @ctlz.i16(i16) {
2822
2798
; Z80-NEXT: add iy, sp
2823
2799
; Z80-NEXT: ld l, (iy + 2)
2824
2800
; Z80-NEXT: ld h, (iy + 3)
2825
- ; Z80-NEXT: add hl, bc
2826
- ; Z80-NEXT: or a, a
2827
- ; Z80-NEXT: sbc hl, bc
2828
- ; Z80-NEXT: jr nz, BB32_2
2829
- ; Z80-NEXT: ; %bb.1:
2830
- ; Z80-NEXT: ld hl, 16
2831
- ; Z80-NEXT: ret
2832
- ; Z80-NEXT: BB32_2: ; %cond.false
2833
2801
; Z80-NEXT: call __sctlz
2834
2802
; Z80-NEXT: ld l, a
2835
2803
; Z80-NEXT: ld h, 0
@@ -2840,14 +2808,6 @@ define i16 @ctlz.i16(i16) {
2840
2808
; EZ80-CODE16-NEXT: ld iy, 0
2841
2809
; EZ80-CODE16-NEXT: add iy, sp
2842
2810
; EZ80-CODE16-NEXT: ld hl, (iy + 2)
2843
- ; EZ80-CODE16-NEXT: add hl, bc
2844
- ; EZ80-CODE16-NEXT: or a, a
2845
- ; EZ80-CODE16-NEXT: sbc hl, bc
2846
- ; EZ80-CODE16-NEXT: jr nz, BB32_2
2847
- ; EZ80-CODE16-NEXT: ; %bb.1:
2848
- ; EZ80-CODE16-NEXT: ld hl, 16
2849
- ; EZ80-CODE16-NEXT: ret
2850
- ; EZ80-CODE16-NEXT: BB32_2: ; %cond.false
2851
2811
; EZ80-CODE16-NEXT: call __sctlz
2852
2812
; EZ80-CODE16-NEXT: ld l, a
2853
2813
; EZ80-CODE16-NEXT: ld h, 0
@@ -2858,14 +2818,6 @@ define i16 @ctlz.i16(i16) {
2858
2818
; EZ80-NEXT: ld iy, 0
2859
2819
; EZ80-NEXT: add iy, sp
2860
2820
; EZ80-NEXT: ld hl, (iy + 3)
2861
- ; EZ80-NEXT: add.sis hl, bc
2862
- ; EZ80-NEXT: or a, a
2863
- ; EZ80-NEXT: sbc.sis hl, bc
2864
- ; EZ80-NEXT: jr nz, BB32_2
2865
- ; EZ80-NEXT: ; %bb.1:
2866
- ; EZ80-NEXT: ld.sis hl, 16
2867
- ; EZ80-NEXT: ret
2868
- ; EZ80-NEXT: BB32_2: ; %cond.false
2869
2821
; EZ80-NEXT: ; kill: def $hl killed $hl killed $uhl
2870
2822
; EZ80-NEXT: call __sctlz
2871
2823
; EZ80-NEXT: ld l, a
@@ -2993,13 +2945,6 @@ define i8 @cttz.i8(i8) {
2993
2945
; Z80-NEXT: add iy, sp
2994
2946
; Z80-NEXT: ld l, (iy + 2)
2995
2947
; Z80-NEXT: ld a, l
2996
- ; Z80-NEXT: or a, a
2997
- ; Z80-NEXT: jr nz, BB35_2
2998
- ; Z80-NEXT: ; %bb.1:
2999
- ; Z80-NEXT: ld a, 8
3000
- ; Z80-NEXT: ret
3001
- ; Z80-NEXT: BB35_2: ; %cond.false
3002
- ; Z80-NEXT: ld a, l
3003
2948
; Z80-NEXT: cpl
3004
2949
; Z80-NEXT: dec l
3005
2950
; Z80-NEXT: and a, l
@@ -3012,13 +2957,6 @@ define i8 @cttz.i8(i8) {
3012
2957
; EZ80-CODE16-NEXT: add iy, sp
3013
2958
; EZ80-CODE16-NEXT: ld l, (iy + 2)
3014
2959
; EZ80-CODE16-NEXT: ld a, l
3015
- ; EZ80-CODE16-NEXT: or a, a
3016
- ; EZ80-CODE16-NEXT: jr nz, BB35_2
3017
- ; EZ80-CODE16-NEXT: ; %bb.1:
3018
- ; EZ80-CODE16-NEXT: ld a, 8
3019
- ; EZ80-CODE16-NEXT: ret
3020
- ; EZ80-CODE16-NEXT: BB35_2: ; %cond.false
3021
- ; EZ80-CODE16-NEXT: ld a, l
3022
2960
; EZ80-CODE16-NEXT: cpl
3023
2961
; EZ80-CODE16-NEXT: dec l
3024
2962
; EZ80-CODE16-NEXT: and a, l
@@ -3031,13 +2969,6 @@ define i8 @cttz.i8(i8) {
3031
2969
; EZ80-NEXT: add iy, sp
3032
2970
; EZ80-NEXT: ld l, (iy + 3)
3033
2971
; EZ80-NEXT: ld a, l
3034
- ; EZ80-NEXT: or a, a
3035
- ; EZ80-NEXT: jr nz, BB35_2
3036
- ; EZ80-NEXT: ; %bb.1:
3037
- ; EZ80-NEXT: ld a, 8
3038
- ; EZ80-NEXT: ret
3039
- ; EZ80-NEXT: BB35_2: ; %cond.false
3040
- ; EZ80-NEXT: ld a, l
3041
2972
; EZ80-NEXT: cpl
3042
2973
; EZ80-NEXT: dec l
3043
2974
; EZ80-NEXT: and a, l
@@ -3052,30 +2983,21 @@ define i16 @cttz.i16(i16) {
3052
2983
; Z80: ; %bb.0:
3053
2984
; Z80-NEXT: ld iy, 0
3054
2985
; Z80-NEXT: add iy, sp
3055
- ; Z80-NEXT: ld l, (iy + 2)
3056
- ; Z80-NEXT: ld h, (iy + 3)
3057
- ; Z80-NEXT: add hl, bc
3058
- ; Z80-NEXT: or a, a
3059
- ; Z80-NEXT: sbc hl, bc
3060
- ; Z80-NEXT: jr nz, BB36_2
3061
- ; Z80-NEXT: ; %bb.1:
3062
- ; Z80-NEXT: ld hl, 16
3063
- ; Z80-NEXT: ret
3064
- ; Z80-NEXT: BB36_2: ; %cond.false
3065
- ; Z80-NEXT: ld a, l
2986
+ ; Z80-NEXT: ld c, (iy + 2)
2987
+ ; Z80-NEXT: ld b, (iy + 3)
2988
+ ; Z80-NEXT: ld a, c
3066
2989
; Z80-NEXT: cpl
3067
- ; Z80-NEXT: ld e , a
3068
- ; Z80-NEXT: ld a, h
2990
+ ; Z80-NEXT: ld l , a
2991
+ ; Z80-NEXT: ld a, b
3069
2992
; Z80-NEXT: cpl
3070
- ; Z80-NEXT: ld c, a
3071
- ; Z80-NEXT: dec hl
3072
- ; Z80-NEXT: ld a, e
3073
- ; Z80-NEXT: and a, l
3074
2993
; Z80-NEXT: ld e, a
3075
- ; Z80-NEXT: ld a, c
3076
- ; Z80-NEXT: and a, h
3077
- ; Z80-NEXT: ld d, a
3078
- ; Z80-NEXT: ex de, hl
2994
+ ; Z80-NEXT: dec bc
2995
+ ; Z80-NEXT: ld a, l
2996
+ ; Z80-NEXT: and a, c
2997
+ ; Z80-NEXT: ld l, a
2998
+ ; Z80-NEXT: ld a, e
2999
+ ; Z80-NEXT: and a, b
3000
+ ; Z80-NEXT: ld h, a
3079
3001
; Z80-NEXT: call __spopcnt
3080
3002
; Z80-NEXT: ld l, a
3081
3003
; Z80-NEXT: ld h, 0
@@ -3085,29 +3007,20 @@ define i16 @cttz.i16(i16) {
3085
3007
; EZ80-CODE16: ; %bb.0:
3086
3008
; EZ80-CODE16-NEXT: ld iy, 0
3087
3009
; EZ80-CODE16-NEXT: add iy, sp
3088
- ; EZ80-CODE16-NEXT: ld hl, (iy + 2)
3089
- ; EZ80-CODE16-NEXT: add hl, bc
3090
- ; EZ80-CODE16-NEXT: or a, a
3091
- ; EZ80-CODE16-NEXT: sbc hl, bc
3092
- ; EZ80-CODE16-NEXT: jr nz, BB36_2
3093
- ; EZ80-CODE16-NEXT: ; %bb.1:
3094
- ; EZ80-CODE16-NEXT: ld hl, 16
3095
- ; EZ80-CODE16-NEXT: ret
3096
- ; EZ80-CODE16-NEXT: BB36_2: ; %cond.false
3097
- ; EZ80-CODE16-NEXT: ld a, l
3010
+ ; EZ80-CODE16-NEXT: ld bc, (iy + 2)
3011
+ ; EZ80-CODE16-NEXT: ld a, c
3098
3012
; EZ80-CODE16-NEXT: cpl
3099
- ; EZ80-CODE16-NEXT: ld e , a
3100
- ; EZ80-CODE16-NEXT: ld a, h
3013
+ ; EZ80-CODE16-NEXT: ld l , a
3014
+ ; EZ80-CODE16-NEXT: ld a, b
3101
3015
; EZ80-CODE16-NEXT: cpl
3102
- ; EZ80-CODE16-NEXT: ld c, a
3103
- ; EZ80-CODE16-NEXT: dec hl
3104
- ; EZ80-CODE16-NEXT: ld a, e
3105
- ; EZ80-CODE16-NEXT: and a, l
3106
3016
; EZ80-CODE16-NEXT: ld e, a
3107
- ; EZ80-CODE16-NEXT: ld a, c
3108
- ; EZ80-CODE16-NEXT: and a, h
3109
- ; EZ80-CODE16-NEXT: ld d, a
3110
- ; EZ80-CODE16-NEXT: ex de, hl
3017
+ ; EZ80-CODE16-NEXT: dec bc
3018
+ ; EZ80-CODE16-NEXT: ld a, l
3019
+ ; EZ80-CODE16-NEXT: and a, c
3020
+ ; EZ80-CODE16-NEXT: ld l, a
3021
+ ; EZ80-CODE16-NEXT: ld a, e
3022
+ ; EZ80-CODE16-NEXT: and a, b
3023
+ ; EZ80-CODE16-NEXT: ld h, a
3111
3024
; EZ80-CODE16-NEXT: call __spopcnt
3112
3025
; EZ80-CODE16-NEXT: ld l, a
3113
3026
; EZ80-CODE16-NEXT: ld h, 0
@@ -3117,30 +3030,20 @@ define i16 @cttz.i16(i16) {
3117
3030
; EZ80: ; %bb.0:
3118
3031
; EZ80-NEXT: ld iy, 0
3119
3032
; EZ80-NEXT: add iy, sp
3120
- ; EZ80-NEXT: ld hl, (iy + 3)
3121
- ; EZ80-NEXT: add.sis hl, bc
3122
- ; EZ80-NEXT: or a, a
3123
- ; EZ80-NEXT: sbc.sis hl, bc
3124
- ; EZ80-NEXT: jr nz, BB36_2
3125
- ; EZ80-NEXT: ; %bb.1:
3126
- ; EZ80-NEXT: ld.sis hl, 16
3127
- ; EZ80-NEXT: ret
3128
- ; EZ80-NEXT: BB36_2: ; %cond.false
3129
- ; EZ80-NEXT: ld a, l
3033
+ ; EZ80-NEXT: ld bc, (iy + 3)
3034
+ ; EZ80-NEXT: ld a, c
3130
3035
; EZ80-NEXT: cpl
3131
- ; EZ80-NEXT: ld e , a
3132
- ; EZ80-NEXT: ld a, h
3036
+ ; EZ80-NEXT: ld l , a
3037
+ ; EZ80-NEXT: ld a, b
3133
3038
; EZ80-NEXT: cpl
3134
- ; EZ80-NEXT: ld c, a
3135
- ; EZ80-NEXT: dec.sis hl
3136
- ; EZ80-NEXT: ld a, e
3137
- ; EZ80-NEXT: and a, l
3138
3039
; EZ80-NEXT: ld e, a
3139
- ; EZ80-NEXT: ld a, c
3140
- ; EZ80-NEXT: and a, h
3141
- ; EZ80-NEXT: ld d, a
3142
- ; EZ80-NEXT: ld l, e
3143
- ; EZ80-NEXT: ld h, d
3040
+ ; EZ80-NEXT: dec.sis bc
3041
+ ; EZ80-NEXT: ld a, l
3042
+ ; EZ80-NEXT: and a, c
3043
+ ; EZ80-NEXT: ld l, a
3044
+ ; EZ80-NEXT: ld a, e
3045
+ ; EZ80-NEXT: and a, b
3046
+ ; EZ80-NEXT: ld h, a
3144
3047
; EZ80-NEXT: call __spopcnt
3145
3048
; EZ80-NEXT: ld l, a
3146
3049
; EZ80-NEXT: ld h, 0
0 commit comments