--- /dev/null
+/*
+ * tests for shift instruction relaxation
+ *
+ * Author: libin
+ */
+
+.include "relaxation_macro.h"
+
+.macro _shift_op_pattern insn insn1
+ insn_32 "\insn r0, r0, 0"
+ insn_32 "\insn r0, r0, 31"
+ insn_32 "\insn r15, r15, 0"
+ insn_32 "\insn r15, r15, 31"
+
+ tran_16_32 "\insn! r0, 0", "\insn r0, r0, 0"
+
+ /* shouldn't alter */
+ insn_32 "\insn1 r0, r0, 0"
+ insn_32 "\insn r0, r2, 0"
+ insn_32 "\insn r16, r16, 0"
+.endm
+
+.text
+/* slli/srli rD,rA,Imm5 -> slli!/srli! rD,Imm5 */
+_shift_op_pattern "slli", "slli.c"
+_shift_op_pattern "srli", "srli.c"