I think we need to break up...

My boyfriend and I have been together over a year. I love him very very much. However, he talks down to me whenever we get into a disagreement, makes me feel small and like I’m less than a person. He’s consistently calling me names and it feels like working out in the gym means more to him than our relationship. He pretends that things are okay when something is actually bothering him (even if I ask him a million times what’s up) and then he blindsides me with anger when he’s ready to “talk” about things (this is where the name calling and talking down to me comes into play). I told him today how he makes me feel and he told me that I’m less than a perfect girlfriend when I’m so good to him. I’m faithful, I’m loyal, I do almost everything for him. He’s staying in my home right now rent free due to a scary roommate situation and he STILL talks to me like I’m a piece of shit. I’m scared to leave because I love him but I’m so tired of him hurting me and putting me down. Any advice ladies ??