Don’t know what to do

I’m 19 my boyfriend who I have been with for almost 5 years and have a 1 year old with always tells me I’m a lazy cunt and we should break up I’m stupid and he says he’s retarded for staying with me this long and I’m a horrible mother…he never used to do this but now it’s EVERY morning first words out of his mouth in the morning are “get the fuck up you stupid cunt” then he says I’m a horrible mother I’m useless etc etc then goes outside has a smoke and comes in and acts like nothing happened….I don’t say or do anything to upset him all I do is wake up….I don’t want to throw 5 years away I truly do love this man but I’m starting to feel like I’m never going to be good enough no matter how much I try I can clean the house to the point it’s spotless, have supper ready when he gets home (I have a full time job as well but I’m on maternity leave still) I make sure the laundry is done I make sure there is absolutely nothing for him to do when he gets home except relax and spend some time with our daughter before she goes to bed but I still get called lazy fat bitch, cunt, stupid etc on his day off I had an appointment and because he wasn’t working I asked him if he could watch our daughter so I didn’t have to take her with me because she gets bored and cranky he flipped out on me and said he shouldn’t have to babysit her on his days off….I don’t want to break up but I really don’t know how much more I can take😭