Я бы также взглянул на таблицу в Руководствах разработчика программного обеспечения для архитектуры Intel 64 и IA-32, том 2"SAL / SAR / SHL / SHR — Shift", в котором содержится таблица с:
D0 /4 SHL r/m8, 1
REX + D0 /4 SHL r/m8**, 1
D2 /4 SHL r/m8, CL
REX + D2 /4 SHL r/m8**, CL
C0 /4 ib SHL r/m8, imm8
REX + C0 /4 ib SHL r/m8**, imm8
D1 /4 SHL r/m16,1
D3 /4 SHL r/m16, CL
C1 /4 ib SHL r/m16, imm8
D1 /4 SHL r/m32,1
REX.W + D1 /4 SHL r/m64,1
D3 /4 SHL r/m32, CL
REX.W + D3 /4 SHL r/m64, CL
C1 /4 ib SHL r/m32, imm8
REX.W + C1 /4 ib SHL r/m64, imm8
D0 /4 SAL r/m8, 1
REX + D0 /4 SAL r/m8**, 1
D2 /4 SAL r/m8, CL
REX + D2 /4 SAL r/m8**, CL
C0 /4 ib SAL r/m8, imm8
REX + C0 /4 ib SAL r/m8**, imm8
D1 /4 SAL r/m16, 1
D3 /4 SAL r/m16, CL
C1 /4 ib SAL r/m16, imm8
D1 /4 SAL r/m32, 1
REX.W + D1 /4 SAL r/m64, 1
D3 /4 SAL r/m32, CL
REX.W + D3 /4 SAL r/m64, CL
C1 /4 ib SAL r/m32, imm8
REX.W + C1 /4 ib SAL r/m64, imm8
Сравнивая обе части, мы видим, что каждый выбор операнда имеет одинаковую кодировку для SHL и SAL, поэтому они идентичны.
Мистическая цитата следует в том же разделе, подтверждая это.