A very simple way to figure this out is to just write some code and disassemble, see what that particular toolchain has encoded and then compare that to the docs...
.globl _start
_start:
ldr r3,hello
nop
nop
nop
nop
hello: .word 0x1234
which gives
00000000 <_start>:
0: e59f300c ldr r3, [pc, #12] ; 14 <hello>
4: e1a00000 nop ; (mov r0, r0)
8: e1a00000 nop ; (mov r0, r0)
c: e1a00000 nop ; (mov r0, r0)
10: e1a00000 nop ; (mov r0, r0)
00000014 <hello>:
14: 00001234 andeq r1, r0, r4, lsr r2
the instruction in question
e59f300c
11100101100111110011000000001100
1110 01 0 1 1 0 0 1 1111 0011 000000001100
as mentioned the condition code is 1110 which is "ALways". the Rn is the pc and the Rd is r3. The pc is in bits 19:16 not 15:12.
the desired address is 0x14 in this case with the instruction at 0x00. So for that instruction the pc is 0x08 when executing so 0x14-0x08 is 0x0C which is the offset encoded.
1110
(aka ALways). PC is R15, aka1111
. – Drew McGowen