There are certain Pokémon that are required to catch Regice, Registeel and Regirock and they aren't the most obvious catches.
One of the Pokémon requires a Super Rod and the other requires the ability to dive, once you grab these two Pokémon your ability to catch the Regis is available.
Without further ado, here's how to catch the Pokémon and grab the rod.
Super Rod
Fly to Mosdeep City, go down and to the right (but don't go down the staircase). Follow the path all way down to the right until there is a staircase on the path that leads north. Go on the path towards the left and go up to the house on the left of the path. Inside the house will be a fisherman, interact with him to obtain the rod.
Wailmer
Fly to Route 110, once you land you should see a man fishing (near the bottom right). Use your Super Rod to fish in the body of water, you should catch Wailmer there.
Wailmer evolves into Wailord at level 40 and is used to catch Regice, Registeel and Regirock (you will also need Relicanth).
If you are looking to get your hands on a Wailord, there's about a 1% chance of you catching it on Route 129. Feel free to try and catch it, but you might be better off leveling a Wailmer.
Relicanth
Fly to Route 130 with a Pokémon that knows Dive. Use Dive in the spot to the right of Route 130 and then mosey around the grass area until you encounter Relicanth — it can also be caught in Route 129.
Here's where you can find guides for catching legendary Pokémon and finding Mega Stones.