Skip to content

Commit ee2fcb4

Browse files
authored
Add clif instructions (imul_imm, get_return_address) to riscv64 backend. (#11455)
1 parent aa91737 commit ee2fcb4

2 files changed

Lines changed: 103 additions & 0 deletions

File tree

cranelift/filetests/filetests/isa/riscv64/amodes-fp.clif

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,3 +35,33 @@ block0:
3535
; addi sp, sp, 0x10
3636
; ret
3737

38+
function %return_address() -> i64 {
39+
block0:
40+
v0 = get_return_address.i64
41+
return v0
42+
}
43+
44+
; VCode:
45+
; addi sp,sp,-16
46+
; sd ra,8(sp)
47+
; sd fp,0(sp)
48+
; mv fp,sp
49+
; block0:
50+
; ld a0,8(fp)
51+
; ld ra,8(sp)
52+
; ld fp,0(sp)
53+
; addi sp,sp,16
54+
; ret
55+
;
56+
; Disassembled:
57+
; block0: ; offset 0x0
58+
; addi sp, sp, -0x10
59+
; sd ra, 8(sp)
60+
; sd s0, 0(sp)
61+
; mv s0, sp
62+
; block1: ; offset 0x10
63+
; ld a0, 8(s0)
64+
; ld ra, 8(sp)
65+
; ld s0, 0(sp)
66+
; addi sp, sp, 0x10
67+
; ret

cranelift/filetests/filetests/isa/riscv64/arithmetic.clif

Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -803,3 +803,76 @@ block0(v0: i8):
803803
; block0: ; offset 0x0
804804
; addiw a0, a0, -1
805805
; ret
806+
807+
function %imul_i8_const(i8) -> i8 {
808+
block0(v0: i8):
809+
v3 = imul_imm v0, 97
810+
return v3
811+
}
812+
813+
; VCode:
814+
; block0:
815+
; li a3,97
816+
; mulw a0,a0,a3
817+
; ret
818+
;
819+
; Disassembled:
820+
; block0: ; offset 0x0
821+
; addi a3, zero, 0x61
822+
; mulw a0, a0, a3
823+
; ret
824+
825+
function %imul_i16_const(i16) -> i16 {
826+
block0(v0: i16):
827+
v3 = imul_imm v0, 97
828+
return v3
829+
}
830+
831+
; VCode:
832+
; block0:
833+
; li a3,97
834+
; mulw a0,a0,a3
835+
; ret
836+
;
837+
; Disassembled:
838+
; block0: ; offset 0x0
839+
; addi a3, zero, 0x61
840+
; mulw a0, a0, a3
841+
; ret
842+
843+
function %imul_i32_const(i32) -> i32 {
844+
block0(v0: i32):
845+
v3 = imul_imm v0, 97
846+
return v3
847+
}
848+
849+
; VCode:
850+
; block0:
851+
; li a3,97
852+
; mulw a0,a0,a3
853+
; ret
854+
;
855+
; Disassembled:
856+
; block0: ; offset 0x0
857+
; addi a3, zero, 0x61
858+
; mulw a0, a0, a3
859+
; ret
860+
861+
function %imul_i64_const(i64) -> i64 {
862+
block0(v0: i64):
863+
v3 = imul_imm v0, 97
864+
return v3
865+
}
866+
867+
; VCode:
868+
; block0:
869+
; li a3,97
870+
; mul a0,a0,a3
871+
; ret
872+
;
873+
; Disassembled:
874+
; block0: ; offset 0x0
875+
; addi a3, zero, 0x61
876+
; mul a0, a0, a3
877+
; ret
878+

0 commit comments

Comments
 (0)