.macro cond op
.irp cond, eq, ne, gt, ge, lt, le
it \cond
\op\().i32 q0, q1, #1
.endr
.endm

.syntax unified
.thumb
vshrnt.i64 q0, q1, #1
vshrnb.i64 q0, q1, #1
vrshrnt.i64 q0, q1, #1
vrshrnb.i64 q0, q1, #1
vshrnt.i16 q0, q1, #0
vshrnt.i16 q0, q1, #9
vshrnt.i32 q0, q1, #0
vshrnt.i32 q0, q1, #17
vshrnb.i16 q0, q1, #0
vshrnb.i16 q0, q1, #9
vshrnb.i32 q0, q1, #0
vshrnb.i32 q0, q1, #17
cond vshrnt
cond vshrnb
cond vrshrnt
cond vrshrnb
it eq
vshrnteq.i32 q0, q1, #1
vshrnteq.i32 q0, q1, #1
vpst
vshrnteq.i32 q0, q1, #1
vshrntt.i32 q0, q1, #1
vpst
vshrnt.i32 q0, q1, #1
it eq
vshrnbeq.i32 q0, q1, #1
vshrnbeq.i32 q0, q1, #1
vpst
vshrnbeq.i32 q0, q1, #1
vshrnbt.i32 q0, q1, #1
vpst
vshrnb.i32 q0, q1, #1
it eq
vrshrnteq.i32 q0, q1, #1
vrshrnteq.i32 q0, q1, #1
vpst
vrshrnteq.i32 q0, q1, #1
vrshrntt.i32 q0, q1, #1
vpst
vrshrnt.i32 q0, q1, #1
it eq
vrshrnbeq.i32 q0, q1, #1
vrshrnbeq.i32 q0, q1, #1
vpst
vrshrnbeq.i32 q0, q1, #1
vrshrnbt.i32 q0, q1, #1
vpst
vrshrnb.i32 q0, q1, #1
