a = a + b<<3
return a
}
+
+//
+// Convert and shift.
+//
+
+func rsh64Uto32U(v uint64) uint32 {
+ x := uint32(v)
+ // riscv64:"MOVWU"
+ if x > 8 {
+ // riscv64:"SRLIW",-"MOVWU",-"SLLI"
+ x >>= 2
+ }
+ return x
+}
+
+func rsh64Uto16U(v uint64) uint16 {
+ x := uint16(v)
+ // riscv64:"MOVHU"
+ if x > 8 {
+ // riscv64:"SLLI","SRLI"
+ x >>= 2
+ }
+ return x
+}
+
+func rsh64Uto8U(v uint64) uint8 {
+ x := uint8(v)
+ // riscv64:"MOVBU"
+ if x > 8 {
+ // riscv64:"SLLI","SRLI"
+ x >>= 2
+ }
+ return x
+}
+
+func rsh64to32(v int64) int32 {
+ x := int32(v)
+ // riscv64:"MOVW"
+ if x > 8 {
+ // riscv64:"SRAIW",-"MOVW",-"SLLI"
+ x >>= 2
+ }
+ return x
+}
+
+func rsh64to16(v int64) int16 {
+ x := int16(v)
+ // riscv64:"MOVH"
+ if x > 8 {
+ // riscv64:"SLLI","SRAI"
+ x >>= 2
+ }
+ return x
+}
+
+func rsh64to8(v int64) int8 {
+ x := int8(v)
+ // riscv64:"MOVB"
+ if x > 8 {
+ // riscv64:"SLLI","SRAI"
+ x >>= 2
+ }
+ return x
+}