I have a GPIO interrupt working on an LCP11Uxx. There are two registers SIENF and IENF that seem to do the same thing. They both set a bit in IENF. The datasheet says writing to IENF sets an interrupt, and writing to SIENF just writes to IENF. I tested it in the debugger, and it's true.
If I can write directly to IENF, what is the purpose of SIENF?
Have a look in the Users Manual:
Using IENF you can both set and reset the enable interrupt (writing 0 or 1) in the SIENF you can only enable the interrupt (writing 1), writing a 0 to one of the bits in SIENF has no effect (so you can't by mistake, disable any interrupts that are enabled somewhere else, by setting its bit to 0 in SIENF)