GCC内嵌汇编 SSAT饱和加移位指令的写法的问题

问题遇到的现象和发生背景

在STM32CubeIDE中,嵌套饱和运算指令SSAT,但一直编译不通过

问题相关代码,请勿粘贴截图

在c语言代码中嵌套如下的写法
asm ("ssat %0, %1, %2, %3" : "=r" (calibFactor) : "I" (16), "r" (calibFactor), "I" (14));
从keil中移植过来的源代码是 __asm ("SSAT " #calibFactor ", #16, " #calibFactor ", ASR #14" )

运行结果及报错内容

编译报错是 Error: shift expression expected -- `ssat ip,#16,ip,#14'

我的解答思路和尝试过的方法

因为STM32CubeIDE自带的是GCC编译器,但没有找到正确的内嵌写法
假设只做饱和运算__asm__ ("ssat %0, %1, %2" : "=r" (calibFactor) : "I" (16), "r" (calibFactor)); 编译能够通过

我想要达到的结果

我猜测是加入了移位字段后出现了问题,请问各位,该饱和指令在GCC下面正确的写法是什么?

arm中的饱和指令
https://blog.csdn.net/zougang_0623/article/details/6980619

(^_^)https://cn.bing.com/search?q=gcc+asm+ssat&form=QBLHCN&sp=-1&pq=gcc+asm+ssat

To emit byte 0x12 (for example), do:

    asm  __volatile__ (".byte 0x12");