Abusive relationship? (I need some advive)

My bf has put me down, called me names, and made fun of me in the past and still does sometimes. He would always claim that it was only a “joke” and that he was not being serious. However these “jokes” were always at my expence. Here are some examples of his “jokes”: He would call me stupid, useless, slut, bitch, whore, ugly, discusting, and fat. He would tell me that I had an ugly and discusting vagina that looked like a clam and smelled bad. He would say that I wanted to fuck everyone including all his friends. This really tore down my self esteem. I would tell him that it hurt my feelings but he would just do it anyway. I confronted him on this one day and we had a big fight. He called me ungrateful and said that he gives me way more compliments than insults and that I should only focus on the good in him. Eventually after all the constant insults and put downs I started being mean back and insulting him when he insulted me. He turned things around on me and when I would call him out on his behavior he would just say that I was mean to so I couldnt complain. When we first started dating he told me that I had a big belly and he would pull at my skin and say that it was ok because he liked chubby girls. It made me feel terrible. The thing is though I was only 110 pounds and much smaller than him but he thought that I was chubby. He was very close the same height as me but 60 pounds heavier. I grew to resent him but at the same time I loved him. He had a sweet side to him as well. He would tell me that I was pretty. He would say that he was lucky to have a girl like me. He would take me out and spend a lot of time and money on me. He constantly says that I dont really love him. He says that I am just like everyone else in his life and that I hate him. I do love my boyfriend but at the same time I resent him for what he has put me through. He can tell that I resent him and says that it is because I am just an ungrateful bitch like everyone else. I know that these things make my boyfriend sound like a horrible person, but I don’t think that he is a bad person and I really do love him. I think that he is just insecure and thinks that he is not good enough. I dont know if he really meant me harm by saying the things that he has said. Maybe it is just his way of joking. He told me that he couldnt change that. What do you guys think I should do? Right now we are not talking because we had a big fight. I have not spoken to him in 3 days. I told him to leave me alone and he has not contacted me since. What should I do?