CMOS-compatible spintronic devices: a review