I think you mean "gpio_int[0] to gpio_int[3]", right? Not "gpio_int[0] to gpio_int[4]". There is no gpio_int[4] mentioned in that manual.
The bcm2835 manual that you referenced was written for the first generation Raspberry Pi, in which there were only 2 banks of GPIO pins.
On the BCM2837 (the SoC used in the Raspberry Pi 3), there are actually 3 banks of GPIO pins, so there are four interrupt lines going from the GPIO controller to the interrupt controller.
- gpio_int[0] for BANK0 (pins 0-27)
- gpio_int1 for BANK1 (pins 28-45)
- gpio_int[2] for BANK2 (pins 46-53)
- gpio_int[3] for all the pins
You can verify this on the Raspberry Pi 3 with the "raspi-gpio get" command, which lists each pin's function (INPUT/OUTPUT/ALT). If you filter the results with grep, you should see:
raspi-gpio get | grep BANK
BANK0 (GPIO 0 to 27):
BANK1 (GPIO 28 to 45):
BANK2 (GPIO 46 to 53):
Even though the GPIO controller in the original BCM2835 only had 2 banks, Broadcom was forward–looking and reserved a bit in each register of the interrupt controller for future versions, the gpio controller of which would have an additional bank.
If you are using a pi that has a gpio controller with 3 banks and you replace gpio_int[3] with gpio_int[2], you will only be able to get interrupts if one of the gpios in bank2 (pins 46-53) is set, but those pins are not exposed on the header and are connected to the SD card.