riscv64: Improve signed and zero extend codegen (#5844)
* riscv64: Remove unused code * riscv64: Group extend rules * riscv64: Remove more unused rules * riscv64: Cleanup existing extension rules * riscv64: Move the existing Extend rules to ISLE * riscv64: Use `sext.w` when extending * riscv64: Remove duplicate extend tests * riscv64: Use `zbb` instructions when extending values * riscv64: Use `zbkb` extensions when zero extending * riscv64: Enable additional tests for extend i128 * riscv64: Fix formatting for `Inst::Extend` * riscv64: Reverse register for pack * riscv64: Misc Cleanups * riscv64: Cleanup extend rules
This commit is contained in:
@@ -19,8 +19,7 @@ block0(v0: i64, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a1, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; sext.w a2, a1
|
||||
; add a2, a0, a2
|
||||
; lw a0, 0(a2)
|
||||
; ret
|
||||
@@ -42,8 +41,7 @@ block0(v0: i64, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a1, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; sext.w a2, a1
|
||||
; add a2, a2, a0
|
||||
; lw a0, 0(a2)
|
||||
; ret
|
||||
@@ -59,20 +57,22 @@ block0(v0: i32, v1: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a3,a0
|
||||
; uext.w a4,a1
|
||||
; add a3,a3,a4
|
||||
; lw a0,0(a3)
|
||||
; slli a4,a0,32
|
||||
; srli a6,a4,32
|
||||
; slli a4,a1,32
|
||||
; srli a7,a4,32
|
||||
; add a5,a6,a7
|
||||
; lw a0,0(a5)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a3, a0, 0x20
|
||||
; srli a3, a3, 0x20
|
||||
; slli a4, a0, 0x20
|
||||
; srli a6, a4, 0x20
|
||||
; slli a4, a1, 0x20
|
||||
; srli a4, a4, 0x20
|
||||
; add a3, a3, a4
|
||||
; lw a0, 0(a3)
|
||||
; srli a7, a4, 0x20
|
||||
; add a5, a6, a7
|
||||
; lw a0, 0(a5)
|
||||
; ret
|
||||
|
||||
function %f8(i64, i32) -> i32 {
|
||||
@@ -97,8 +97,7 @@ block0(v0: i64, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a4, a1, 0x20
|
||||
; srai a4, a4, 0x20
|
||||
; sext.w a4, a1
|
||||
; addi a4, a4, 0x20
|
||||
; add a4, a4, a0
|
||||
; add a4, a4, a4
|
||||
@@ -261,8 +260,7 @@ block0(v0: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; sext.w a0, a0
|
||||
; lw a0, 0(a0)
|
||||
; ret
|
||||
|
||||
@@ -285,10 +283,8 @@ block0(v0: i32, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a3, a0, 0x20
|
||||
; srai a3, a3, 0x20
|
||||
; slli a4, a1, 0x20
|
||||
; srai a4, a4, 0x20
|
||||
; sext.w a3, a0
|
||||
; sext.w a4, a1
|
||||
; add a3, a3, a4
|
||||
; lw a0, 0(a3)
|
||||
; ret
|
||||
@@ -305,8 +301,9 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; block0:
|
||||
; lui a3,1048575
|
||||
; addi a3,a3,4094
|
||||
; uext.w a6,a3
|
||||
; lh a0,0(a6)
|
||||
; slli a6,a3,32
|
||||
; srli t3,a6,32
|
||||
; lh a0,0(t3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
@@ -314,8 +311,8 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; lui a3, 0xfffff
|
||||
; addi a3, a3, -2
|
||||
; slli a6, a3, 0x20
|
||||
; srli a6, a6, 0x20
|
||||
; lh a0, 0(a6)
|
||||
; srli t3, a6, 0x20
|
||||
; lh a0, 0(t3)
|
||||
; ret
|
||||
|
||||
function %f19(i64, i64, i64) -> i32 {
|
||||
@@ -330,8 +327,9 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; block0:
|
||||
; lui a3,1
|
||||
; addi a3,a3,2
|
||||
; uext.w a6,a3
|
||||
; lh a0,0(a6)
|
||||
; slli a6,a3,32
|
||||
; srli t3,a6,32
|
||||
; lh a0,0(t3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
@@ -339,8 +337,8 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; lui a3, 1
|
||||
; addi a3, a3, 2
|
||||
; slli a6, a3, 0x20
|
||||
; srli a6, a6, 0x20
|
||||
; lh a0, 0(a6)
|
||||
; srli t3, a6, 0x20
|
||||
; lh a0, 0(t3)
|
||||
; ret
|
||||
|
||||
function %f20(i64, i64, i64) -> i32 {
|
||||
@@ -363,8 +361,7 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; block0: ; offset 0x0
|
||||
; lui a3, 0xfffff
|
||||
; addi a3, a3, -2
|
||||
; slli a6, a3, 0x20
|
||||
; srai a6, a6, 0x20
|
||||
; sext.w a6, a3
|
||||
; lh a0, 0(a6)
|
||||
; ret
|
||||
|
||||
@@ -388,8 +385,7 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
; block0: ; offset 0x0
|
||||
; lui a3, 1
|
||||
; addi a3, a3, 2
|
||||
; slli a6, a3, 0x20
|
||||
; srai a6, a6, 0x20
|
||||
; sext.w a6, a3
|
||||
; lh a0, 0(a6)
|
||||
; ret
|
||||
|
||||
@@ -554,8 +550,7 @@ block0(v0: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a0, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; sext.w a2, a0
|
||||
; ld a0, 0(a2)
|
||||
; ld a1, 8(a2)
|
||||
; sd a0, 0(a2)
|
||||
@@ -585,8 +580,7 @@ block0(v0: i64, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a4, a1, 0x20
|
||||
; srai a4, a4, 0x20
|
||||
; sext.w a4, a1
|
||||
; add a4, a0, a4
|
||||
; addi a4, a4, 0x18
|
||||
; ld a0, 0(a4)
|
||||
|
||||
@@ -274,10 +274,8 @@ block0(v0: i32, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; slli a2, a1, 0x20
|
||||
; srai a2, a2, 0x20
|
||||
; sext.w a0, a0
|
||||
; sext.w a2, a1
|
||||
; addi a4, zero, -1
|
||||
; addi a6, zero, 1
|
||||
; slli t3, a6, 0x3f
|
||||
@@ -324,11 +322,9 @@ block0(v0: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; sext.w t2, a0
|
||||
; addi a1, zero, 2
|
||||
; slli a3, a1, 0x20
|
||||
; srai a3, a3, 0x20
|
||||
; sext.w a3, a1
|
||||
; addi a5, zero, -1
|
||||
; addi a7, zero, 1
|
||||
; slli t4, a7, 0x3f
|
||||
@@ -357,23 +353,23 @@ block0(v0: i32, v1: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; mv a5,a0
|
||||
; uext.w a0,a1
|
||||
; trap_ifc int_divz##(zero eq a0)
|
||||
; uext.w a3,a5
|
||||
; divuw a0,a3,a0
|
||||
; slli a1,a1,32
|
||||
; srli a2,a1,32
|
||||
; trap_ifc int_divz##(zero eq a2)
|
||||
; slli a5,a0,32
|
||||
; srli a7,a5,32
|
||||
; divuw a0,a7,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; ori a5, a0, 0
|
||||
; slli a0, a1, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; bne zero, a0, 8
|
||||
; slli a1, a1, 0x20
|
||||
; srli a2, a1, 0x20
|
||||
; bne zero, a2, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; slli a3, a5, 0x20
|
||||
; srli a3, a3, 0x20
|
||||
; divuw a0, a3, a0
|
||||
; slli a5, a0, 0x20
|
||||
; srli a7, a5, 0x20
|
||||
; divuw a0, a7, a2
|
||||
; ret
|
||||
|
||||
function %f15(i32) -> i32 {
|
||||
@@ -386,22 +382,24 @@ block0(v0: i32):
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,2
|
||||
; uext.w a1,t2
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; uext.w a4,a0
|
||||
; divuw a0,a4,a1
|
||||
; slli a1,t2,32
|
||||
; srli a3,a1,32
|
||||
; trap_ifc int_divz##(zero eq a3)
|
||||
; slli a6,a0,32
|
||||
; srli t3,a6,32
|
||||
; divuw a0,t3,a3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 2
|
||||
; slli a1, t2, 0x20
|
||||
; srli a1, a1, 0x20
|
||||
; bne zero, a1, 8
|
||||
; srli a3, a1, 0x20
|
||||
; bne zero, a3, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; slli a4, a0, 0x20
|
||||
; srli a4, a4, 0x20
|
||||
; divuw a0, a4, a1
|
||||
; slli a6, a0, 0x20
|
||||
; srli t3, a6, 0x20
|
||||
; divuw a0, t3, a3
|
||||
; ret
|
||||
|
||||
function %f16(i32, i32) -> i32 {
|
||||
@@ -419,8 +417,7 @@ block0(v0: i32, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a1, a1, 0x20
|
||||
; srai a1, a1, 0x20
|
||||
; sext.w a1, a1
|
||||
; bne zero, a1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; remw a0, a0, a1
|
||||
@@ -434,18 +431,19 @@ block0(v0: i32, v1: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a1,a1
|
||||
; trap_ifc int_divz##(zero eq a1)
|
||||
; remuw a0,a0,a1
|
||||
; slli a1,a1,32
|
||||
; srli a2,a1,32
|
||||
; trap_ifc int_divz##(zero eq a2)
|
||||
; remuw a0,a0,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a1, a1, 0x20
|
||||
; srli a1, a1, 0x20
|
||||
; bne zero, a1, 8
|
||||
; srli a2, a1, 0x20
|
||||
; bne zero, a2, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: int_divz
|
||||
; remuw a0, a0, a1
|
||||
; remuw a0, a0, a2
|
||||
; ret
|
||||
|
||||
function %f18(i64, i64) -> i64 {
|
||||
|
||||
@@ -47,16 +47,17 @@ block0(v0: i64):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; atomic_load.i32 a0,(a0)
|
||||
; uext.w a0,a0
|
||||
; atomic_load.i32 a1,(a0)
|
||||
; slli a0,a1,32
|
||||
; srli a0,a0,32
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; fence rw, rw
|
||||
; lw a0, 0(a0)
|
||||
; lw a1, 0(a0)
|
||||
; fence r, rw
|
||||
; slli a0, a0, 0x20
|
||||
; slli a0, a1, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; ret
|
||||
|
||||
|
||||
@@ -436,34 +436,35 @@ block0(v0: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b t2,a0
|
||||
; not a1,a0
|
||||
; select_reg a3,a1,a0##condition=(t2 slt zero)
|
||||
; clz a7,a3##ty=i8 tmp=a5 step=a6
|
||||
; addi a0,a7,-1
|
||||
; slli t2,a0,56
|
||||
; srai a1,t2,56
|
||||
; not a3,a0
|
||||
; select_reg a5,a3,a0##condition=(a1 slt zero)
|
||||
; clz t4,a5##ty=i8 tmp=a7 step=t3
|
||||
; addi a0,t4,-1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai t2, t2, 0x38
|
||||
; not a1, a0
|
||||
; bltz t2, 0xc
|
||||
; ori a3, a0, 0
|
||||
; srai a1, t2, 0x38
|
||||
; not a3, a0
|
||||
; bltz a1, 0xc
|
||||
; ori a5, a0, 0
|
||||
; j 8
|
||||
; ori a3, a1, 0
|
||||
; ori a7, zero, 0
|
||||
; addi a6, zero, 8
|
||||
; addi a5, zero, 1
|
||||
; slli a5, a5, 7
|
||||
; blez a6, 0x1c
|
||||
; and t5, a5, a3
|
||||
; ori a5, a3, 0
|
||||
; ori t4, zero, 0
|
||||
; addi t3, zero, 8
|
||||
; addi a7, zero, 1
|
||||
; slli a7, a7, 7
|
||||
; blez t3, 0x1c
|
||||
; and t5, a7, a5
|
||||
; bne zero, t5, 0x14
|
||||
; addi a7, a7, 1
|
||||
; addi a6, a6, -1
|
||||
; srli a5, a5, 1
|
||||
; addi t4, t4, 1
|
||||
; addi t3, t3, -1
|
||||
; srli a7, a7, 1
|
||||
; j -0x18
|
||||
; addi a0, a7, -1
|
||||
; addi a0, t4, -1
|
||||
; ret
|
||||
|
||||
function %c(i16) -> i16 {
|
||||
@@ -474,34 +475,35 @@ block0(v0: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h t2,a0
|
||||
; not a1,a0
|
||||
; select_reg a3,a1,a0##condition=(t2 slt zero)
|
||||
; clz a7,a3##ty=i16 tmp=a5 step=a6
|
||||
; addi a0,a7,-1
|
||||
; slli t2,a0,48
|
||||
; srai a1,t2,48
|
||||
; not a3,a0
|
||||
; select_reg a5,a3,a0##condition=(a1 slt zero)
|
||||
; clz t4,a5##ty=i16 tmp=a7 step=t3
|
||||
; addi a0,t4,-1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai t2, t2, 0x30
|
||||
; not a1, a0
|
||||
; bltz t2, 0xc
|
||||
; ori a3, a0, 0
|
||||
; srai a1, t2, 0x30
|
||||
; not a3, a0
|
||||
; bltz a1, 0xc
|
||||
; ori a5, a0, 0
|
||||
; j 8
|
||||
; ori a3, a1, 0
|
||||
; ori a7, zero, 0
|
||||
; addi a6, zero, 0x10
|
||||
; addi a5, zero, 1
|
||||
; slli a5, a5, 0xf
|
||||
; blez a6, 0x1c
|
||||
; and t5, a5, a3
|
||||
; ori a5, a3, 0
|
||||
; ori t4, zero, 0
|
||||
; addi t3, zero, 0x10
|
||||
; addi a7, zero, 1
|
||||
; slli a7, a7, 0xf
|
||||
; blez t3, 0x1c
|
||||
; and t5, a7, a5
|
||||
; bne zero, t5, 0x14
|
||||
; addi a7, a7, 1
|
||||
; addi a6, a6, -1
|
||||
; srli a5, a5, 1
|
||||
; addi t4, t4, 1
|
||||
; addi t3, t3, -1
|
||||
; srli a7, a7, 1
|
||||
; j -0x18
|
||||
; addi a0, a7, -1
|
||||
; addi a0, t4, -1
|
||||
; ret
|
||||
|
||||
function %c(i32) -> i32 {
|
||||
@@ -521,8 +523,7 @@ block0(v0: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; sext.w t2, a0
|
||||
; not a1, a0
|
||||
; bltz t2, 0xc
|
||||
; ori a3, a0, 0
|
||||
|
||||
@@ -55,7 +55,7 @@ block0(v0: i32):
|
||||
; sd fp,0(sp)
|
||||
; mv fp,sp
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; slli a0,a0,32; srli a0,a0,32
|
||||
; load_sym a2,%g+0
|
||||
; callind a2
|
||||
; ld ra,8(sp)
|
||||
@@ -90,7 +90,7 @@ block0(v0: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; slli a0,a0,32; srli a0,a0,32
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
@@ -113,7 +113,7 @@ block0(v0: i32):
|
||||
; sd fp,0(sp)
|
||||
; mv fp,sp
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; slli a0,a0,32; srai a0,a0,32
|
||||
; load_sym a2,%g+0
|
||||
; callind a2
|
||||
; ld ra,8(sp)
|
||||
@@ -148,7 +148,7 @@ block0(v0: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; slli a0,a0,32; srai a0,a0,32
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
@@ -183,7 +183,7 @@ block0(v0: i8):
|
||||
; li a5,42
|
||||
; li a6,42
|
||||
; li a7,42
|
||||
; sext.b t3,t3
|
||||
; slli t3,t3,56; srai t3,t3,56
|
||||
; sd t3,0(sp)
|
||||
; load_sym t3,%g+0
|
||||
; callind t3
|
||||
@@ -250,7 +250,7 @@ block0(v0: i8):
|
||||
; sw t0,24(a1)
|
||||
; sw t2,32(a1)
|
||||
; sw a2,40(a1)
|
||||
; sext.b t4,a0
|
||||
; slli t4,a0,56; srai t4,t4,56
|
||||
; sd a0,48(a1)
|
||||
; mv a0,t1
|
||||
; mv a1,a3
|
||||
|
||||
@@ -705,7 +705,7 @@ block1:
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw t2,a0,0
|
||||
; sext.w t2,a0
|
||||
; bne t2,zero,taken(label1),not_taken(label2)
|
||||
; block1:
|
||||
; j label3
|
||||
|
||||
@@ -39,8 +39,8 @@ block0(v0: i8):
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,42
|
||||
; uext.b a1,a0
|
||||
; uext.b a3,t2
|
||||
; andi a1,a0,255
|
||||
; andi a3,t2,255
|
||||
; eq a0,a1,a3##ty=i8
|
||||
; ret
|
||||
;
|
||||
@@ -108,9 +108,9 @@ block0(v0: i32, v1: i8, v2: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw a3,a0,0
|
||||
; sext.w a3,a0
|
||||
; li a4,42
|
||||
; addiw a5,a4,0
|
||||
; sext.w a5,a4
|
||||
; select_reg a0,a1,a2##condition=(a3 eq a5)
|
||||
; ret
|
||||
;
|
||||
|
||||
152
cranelift/filetests/filetests/isa/riscv64/extend-i128.clif
Normal file
152
cranelift/filetests/filetests/isa/riscv64/extend-i128.clif
Normal file
@@ -0,0 +1,152 @@
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target riscv64
|
||||
|
||||
function %uextend_i64_i128(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %uextend_i32_i128(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,32
|
||||
; srli a0,t2,32
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srli a0, t2, 0x20
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %uextend_i16_i128(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,48
|
||||
; srli a0,t2,48
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srli a0, t2, 0x30
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %uextend_i8_i128(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a0,a0,255
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %sextend_i64_i128(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; srai a1,a0,63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; srai a1, a0, 0x3f
|
||||
; ret
|
||||
|
||||
function %sextend_i32_i128(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; srai a1,a0,63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sext.w a0, a0
|
||||
; srai a1, a0, 0x3f
|
||||
; ret
|
||||
|
||||
function %sextend_i16_i128(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,48
|
||||
; srai a0,t2,48
|
||||
; srai a1,a0,63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai a0, t2, 0x30
|
||||
; srai a1, a0, 0x3f
|
||||
; ret
|
||||
|
||||
function %sextend_i8_i128(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,56
|
||||
; srai a0,t2,56
|
||||
; srai a1,a0,63
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai a0, t2, 0x38
|
||||
; srai a1, a0, 0x3f
|
||||
; ret
|
||||
|
||||
@@ -1,202 +0,0 @@
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target riscv64
|
||||
|
||||
function %f(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i64 v0
|
||||
v2 = iconst.i64 42
|
||||
v3 = iadd.i64 v2, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; addi a0,a0,42
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; addi a0, a0, 0x2a
|
||||
; ret
|
||||
|
||||
function %f2(i8, i64) -> i64 {
|
||||
block0(v0: i8, v1: i64):
|
||||
v2 = sextend.i64 v0
|
||||
v3 = iadd.i64 v2, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a2,a0
|
||||
; add a0,a2,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a0, 0x38
|
||||
; srai a2, a2, 0x38
|
||||
; add a0, a2, a1
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slt t2,a0,zero
|
||||
; sext.b1 a1,t2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sltz t2, a0
|
||||
; slli a1, t2, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i32(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i32(i32) -> i128 {
|
||||
block0(v0: i32):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; slt a1,a0,zero
|
||||
; sext.b1 a1,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; sltz a1, a0
|
||||
; slli a1, a1, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i16(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i16(i16) -> i128 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; slt a1,a0,zero
|
||||
; sext.b1 a1,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srai a0, a0, 0x30
|
||||
; sltz a1, a0
|
||||
; slli a1, a1, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
function %i128_uextend_i8(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; li a1,0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; mv a1, zero
|
||||
; ret
|
||||
|
||||
function %i128_sextend_i8(i8) -> i128 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i128 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; slt a1,a0,zero
|
||||
; sext.b1 a1,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; sltz a1, a0
|
||||
; slli a1, a1, 0x3f
|
||||
; srai a1, a1, 0x3f
|
||||
; ret
|
||||
|
||||
136
cranelift/filetests/filetests/isa/riscv64/extend-zbb.clif
Normal file
136
cranelift/filetests/filetests/isa/riscv64/extend-zbb.clif
Normal file
@@ -0,0 +1,136 @@
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target riscv64 has_zbb=true
|
||||
|
||||
|
||||
;;;; Uextend rules
|
||||
|
||||
function %uextend16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; zext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x3b, 0x45, 0x05, 0x08
|
||||
; ret
|
||||
|
||||
function %uextend8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a0,a0,255
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %uextend16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; zext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x3b, 0x45, 0x05, 0x08
|
||||
; ret
|
||||
|
||||
;;;; Sextend Rules
|
||||
|
||||
function %sextend8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i16 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x13, 0x15, 0x45, 0x60
|
||||
; ret
|
||||
|
||||
function %sextend8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x13, 0x15, 0x45, 0x60
|
||||
; ret
|
||||
|
||||
function %sextend16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x13, 0x15, 0x55, 0x60
|
||||
; ret
|
||||
|
||||
function %sextend8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x13, 0x15, 0x45, 0x60
|
||||
; ret
|
||||
|
||||
function %sextend16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x13, 0x15, 0x55, 0x60
|
||||
; ret
|
||||
53
cranelift/filetests/filetests/isa/riscv64/extend-zbkb.clif
Normal file
53
cranelift/filetests/filetests/isa/riscv64/extend-zbkb.clif
Normal file
@@ -0,0 +1,53 @@
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target riscv64 has_zbkb=true
|
||||
|
||||
|
||||
function %uextend16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; packw a0,a0,zero
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x3b, 0x45, 0x05, 0x08
|
||||
; ret
|
||||
|
||||
function %uextend16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; packw a0,a0,zero
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x3b, 0x45, 0x05, 0x08
|
||||
; ret
|
||||
|
||||
function %uextend32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; pack a0,a0,zero
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; .byte 0x33, 0x45, 0x05, 0x08
|
||||
; ret
|
||||
|
||||
260
cranelift/filetests/filetests/isa/riscv64/extend.clif
Normal file
260
cranelift/filetests/filetests/isa/riscv64/extend.clif
Normal file
@@ -0,0 +1,260 @@
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target riscv64
|
||||
|
||||
|
||||
;;;; Uextend rules
|
||||
|
||||
function %uextend8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i16 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a0,a0,255
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %uextend8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a0,a0,255
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %uextend16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,48
|
||||
; srli a0,t2,48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srli a0, t2, 0x30
|
||||
; ret
|
||||
|
||||
function %uextend8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; andi a0,a0,255
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %uextend16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,48
|
||||
; srli a0,t2,48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srli a0, t2, 0x30
|
||||
; ret
|
||||
|
||||
function %uextend32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,32
|
||||
; srli a0,t2,32
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srli a0, t2, 0x20
|
||||
; ret
|
||||
|
||||
;;;; Sextend Rules
|
||||
|
||||
function %sextend8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i16 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,56
|
||||
; srai a0,t2,56
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai a0, t2, 0x38
|
||||
; ret
|
||||
|
||||
function %sextend8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,56
|
||||
; srai a0,t2,56
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai a0, t2, 0x38
|
||||
; ret
|
||||
|
||||
function %sextend16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,48
|
||||
; srai a0,t2,48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai a0, t2, 0x30
|
||||
; ret
|
||||
|
||||
function %sextend8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,56
|
||||
; srai a0,t2,56
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai a0, t2, 0x38
|
||||
; ret
|
||||
|
||||
function %sextend16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli t2,a0,48
|
||||
; srai a0,t2,48
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai a0, t2, 0x30
|
||||
; ret
|
||||
|
||||
function %sextend32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sext.w a0, a0
|
||||
; ret
|
||||
|
||||
function %f(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i64 v0
|
||||
v2 = iconst.i64 42
|
||||
v3 = iadd.i64 v2, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli a0,a0,56
|
||||
; srai a2,a0,56
|
||||
; addi a0,a2,42
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a2, a0, 0x38
|
||||
; addi a0, a2, 0x2a
|
||||
; ret
|
||||
|
||||
function %f2(i8, i64) -> i64 {
|
||||
block0(v0: i8, v1: i64):
|
||||
v2 = sextend.i64 v0
|
||||
v3 = iadd.i64 v2, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; slli a2,a0,56
|
||||
; srai a3,a2,56
|
||||
; add a0,a3,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a2, a0, 0x38
|
||||
; srai a3, a2, 0x38
|
||||
; add a0, a3, a1
|
||||
; ret
|
||||
|
||||
@@ -150,7 +150,7 @@ block0(v0: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; addiw t2,a0,0
|
||||
; sext.w t2,a0
|
||||
; li a1,-1
|
||||
; select_reg a1,zero,a1##condition=(zero eq t2)
|
||||
; mv a0,a1
|
||||
|
||||
@@ -16,8 +16,7 @@ block0(v0: i8):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai t2, t2, 0x38
|
||||
; .byte 0x93, 0x13, 0x45, 0x60
|
||||
; neg a1, t2
|
||||
; .byte 0x33, 0xe5, 0xb3, 0x0a
|
||||
; ret
|
||||
@@ -37,8 +36,7 @@ block0(v0: i16):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai t2, t2, 0x30
|
||||
; .byte 0x93, 0x13, 0x55, 0x60
|
||||
; neg a1, t2
|
||||
; .byte 0x33, 0xe5, 0xb3, 0x0a
|
||||
; ret
|
||||
@@ -58,8 +56,7 @@ block0(v0: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; sext.w t2, a0
|
||||
; neg a1, t2
|
||||
; .byte 0x33, 0xe5, 0xb3, 0x0a
|
||||
; ret
|
||||
|
||||
@@ -9,20 +9,21 @@ block0(v0: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b t2,a0
|
||||
; sub a1,zero,t2
|
||||
; select_reg a0,t2,a1##condition=(t2 sgt a1)
|
||||
; slli t2,a0,56
|
||||
; srai a1,t2,56
|
||||
; sub a3,zero,a1
|
||||
; select_reg a0,a1,a3##condition=(a1 sgt a3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x38
|
||||
; srai t2, t2, 0x38
|
||||
; neg a1, t2
|
||||
; blt a1, t2, 0xc
|
||||
; ori a0, a1, 0
|
||||
; srai a1, t2, 0x38
|
||||
; neg a3, a1
|
||||
; blt a3, a1, 0xc
|
||||
; ori a0, a3, 0
|
||||
; j 8
|
||||
; ori a0, t2, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %iabs_i16(i16) -> i16 {
|
||||
@@ -33,20 +34,21 @@ block0(v0: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h t2,a0
|
||||
; sub a1,zero,t2
|
||||
; select_reg a0,t2,a1##condition=(t2 sgt a1)
|
||||
; slli t2,a0,48
|
||||
; srai a1,t2,48
|
||||
; sub a3,zero,a1
|
||||
; select_reg a0,a1,a3##condition=(a1 sgt a3)
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srai t2, t2, 0x30
|
||||
; neg a1, t2
|
||||
; blt a1, t2, 0xc
|
||||
; ori a0, a1, 0
|
||||
; srai a1, t2, 0x30
|
||||
; neg a3, a1
|
||||
; blt a3, a1, 0xc
|
||||
; ori a0, a3, 0
|
||||
; j 8
|
||||
; ori a0, t2, 0
|
||||
; ori a0, a1, 0
|
||||
; ret
|
||||
|
||||
function %iabs_i32(i32) -> i32 {
|
||||
@@ -64,8 +66,7 @@ block0(v0: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srai t2, t2, 0x20
|
||||
; sext.w t2, a0
|
||||
; neg a1, t2
|
||||
; blt a1, t2, 0xc
|
||||
; ori a0, a1, 0
|
||||
|
||||
@@ -16,9 +16,11 @@ block0:
|
||||
; addi t1,t1,3532
|
||||
; lui a2,14
|
||||
; addi a2,a2,3532
|
||||
; uext.h a5,t1
|
||||
; uext.h a7,a2
|
||||
; ne a0,a5,a7##ty=i16
|
||||
; slli a5,t1,48
|
||||
; srli a7,a5,48
|
||||
; slli t4,a2,48
|
||||
; srli t1,t4,48
|
||||
; ne a0,a7,t1##ty=i16
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
@@ -28,10 +30,10 @@ block0:
|
||||
; lui a2, 0xe
|
||||
; addi a2, a2, -0x234
|
||||
; slli a5, t1, 0x30
|
||||
; srli a5, a5, 0x30
|
||||
; slli a7, a2, 0x30
|
||||
; srli a7, a7, 0x30
|
||||
; beq a5, a7, 0xc
|
||||
; srli a7, a5, 0x30
|
||||
; slli t4, a2, 0x30
|
||||
; srli t1, t4, 0x30
|
||||
; beq a7, t1, 0xc
|
||||
; addi a0, zero, 1
|
||||
; j 8
|
||||
; mv a0, zero
|
||||
|
||||
@@ -59,15 +59,16 @@ block0(v0: i32, v1: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a1,a1
|
||||
; addw a0,a0,a1
|
||||
; slli a1,a1,56
|
||||
; srai a3,a1,56
|
||||
; addw a0,a0,a3
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a1, a1, 0x38
|
||||
; srai a1, a1, 0x38
|
||||
; addw a0, a0, a1
|
||||
; srai a3, a1, 0x38
|
||||
; addw a0, a0, a3
|
||||
; ret
|
||||
|
||||
function %add64_32(i64, i32) -> i64 {
|
||||
@@ -85,8 +86,7 @@ block0(v0: i64, v1: i32):
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a1, a1, 0x20
|
||||
; srai a1, a1, 0x20
|
||||
; sext.w a1, a1
|
||||
; add a0, a0, a1
|
||||
; ret
|
||||
|
||||
|
||||
@@ -105,30 +105,31 @@ block0(v0: i32, v1: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; andi a2,a1,31
|
||||
; li a4,32
|
||||
; sub a6,a4,a2
|
||||
; srl t3,a0,a2
|
||||
; sll t0,a0,a6
|
||||
; select_reg t2,zero,t0##condition=(a2 eq zero)
|
||||
; or a0,t3,t2
|
||||
; slli a0,a0,32
|
||||
; srli a2,a0,32
|
||||
; andi a4,a1,31
|
||||
; li a6,32
|
||||
; sub t3,a6,a4
|
||||
; srl t0,a2,a4
|
||||
; sll t2,a2,t3
|
||||
; select_reg a1,zero,t2##condition=(a4 eq zero)
|
||||
; or a0,t0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; andi a2, a1, 0x1f
|
||||
; addi a4, zero, 0x20
|
||||
; sub a6, a4, a2
|
||||
; srl t3, a0, a2
|
||||
; sll t0, a0, a6
|
||||
; beqz a2, 0xc
|
||||
; ori t2, t0, 0
|
||||
; srli a2, a0, 0x20
|
||||
; andi a4, a1, 0x1f
|
||||
; addi a6, zero, 0x20
|
||||
; sub t3, a6, a4
|
||||
; srl t0, a2, a4
|
||||
; sll t2, a2, t3
|
||||
; beqz a4, 0xc
|
||||
; ori a1, t2, 0
|
||||
; j 8
|
||||
; ori t2, zero, 0
|
||||
; or a0, t3, t2
|
||||
; ori a1, zero, 0
|
||||
; or a0, t0, a1
|
||||
; ret
|
||||
|
||||
function %f2(i16, i16) -> i16 {
|
||||
@@ -139,30 +140,31 @@ block0(v0: i16, v1: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; andi a2,a1,15
|
||||
; li a4,16
|
||||
; sub a6,a4,a2
|
||||
; srl t3,a0,a2
|
||||
; sll t0,a0,a6
|
||||
; select_reg t2,zero,t0##condition=(a2 eq zero)
|
||||
; or a0,t3,t2
|
||||
; slli a0,a0,48
|
||||
; srli a2,a0,48
|
||||
; andi a4,a1,15
|
||||
; li a6,16
|
||||
; sub t3,a6,a4
|
||||
; srl t0,a2,a4
|
||||
; sll t2,a2,t3
|
||||
; select_reg a1,zero,t2##condition=(a4 eq zero)
|
||||
; or a0,t0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; andi a2, a1, 0xf
|
||||
; addi a4, zero, 0x10
|
||||
; sub a6, a4, a2
|
||||
; srl t3, a0, a2
|
||||
; sll t0, a0, a6
|
||||
; beqz a2, 0xc
|
||||
; ori t2, t0, 0
|
||||
; srli a2, a0, 0x30
|
||||
; andi a4, a1, 0xf
|
||||
; addi a6, zero, 0x10
|
||||
; sub t3, a6, a4
|
||||
; srl t0, a2, a4
|
||||
; sll t2, a2, t3
|
||||
; beqz a4, 0xc
|
||||
; ori a1, t2, 0
|
||||
; j 8
|
||||
; ori t2, zero, 0
|
||||
; or a0, t3, t2
|
||||
; ori a1, zero, 0
|
||||
; or a0, t0, a1
|
||||
; ret
|
||||
|
||||
function %f3(i8, i8) -> i8 {
|
||||
@@ -173,7 +175,7 @@ block0(v0: i8, v1: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; andi a0,a0,255
|
||||
; andi a2,a1,7
|
||||
; li a4,8
|
||||
; sub a6,a4,a2
|
||||
@@ -297,30 +299,31 @@ block0(v0: i32, v1: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; andi a2,a1,31
|
||||
; li a4,32
|
||||
; sub a6,a4,a2
|
||||
; sll t3,a0,a2
|
||||
; srl t0,a0,a6
|
||||
; select_reg t2,zero,t0##condition=(a2 eq zero)
|
||||
; or a0,t3,t2
|
||||
; slli a0,a0,32
|
||||
; srli a2,a0,32
|
||||
; andi a4,a1,31
|
||||
; li a6,32
|
||||
; sub t3,a6,a4
|
||||
; sll t0,a2,a4
|
||||
; srl t2,a2,t3
|
||||
; select_reg a1,zero,t2##condition=(a4 eq zero)
|
||||
; or a0,t0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; andi a2, a1, 0x1f
|
||||
; addi a4, zero, 0x20
|
||||
; sub a6, a4, a2
|
||||
; sll t3, a0, a2
|
||||
; srl t0, a0, a6
|
||||
; beqz a2, 0xc
|
||||
; ori t2, t0, 0
|
||||
; srli a2, a0, 0x20
|
||||
; andi a4, a1, 0x1f
|
||||
; addi a6, zero, 0x20
|
||||
; sub t3, a6, a4
|
||||
; sll t0, a2, a4
|
||||
; srl t2, a2, t3
|
||||
; beqz a4, 0xc
|
||||
; ori a1, t2, 0
|
||||
; j 8
|
||||
; ori t2, zero, 0
|
||||
; or a0, t3, t2
|
||||
; ori a1, zero, 0
|
||||
; or a0, t0, a1
|
||||
; ret
|
||||
|
||||
function %f6(i16, i16) -> i16 {
|
||||
@@ -331,30 +334,31 @@ block0(v0: i16, v1: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; andi a2,a1,15
|
||||
; li a4,16
|
||||
; sub a6,a4,a2
|
||||
; sll t3,a0,a2
|
||||
; srl t0,a0,a6
|
||||
; select_reg t2,zero,t0##condition=(a2 eq zero)
|
||||
; or a0,t3,t2
|
||||
; slli a0,a0,48
|
||||
; srli a2,a0,48
|
||||
; andi a4,a1,15
|
||||
; li a6,16
|
||||
; sub t3,a6,a4
|
||||
; sll t0,a2,a4
|
||||
; srl t2,a2,t3
|
||||
; select_reg a1,zero,t2##condition=(a4 eq zero)
|
||||
; or a0,t0,a1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; andi a2, a1, 0xf
|
||||
; addi a4, zero, 0x10
|
||||
; sub a6, a4, a2
|
||||
; sll t3, a0, a2
|
||||
; srl t0, a0, a6
|
||||
; beqz a2, 0xc
|
||||
; ori t2, t0, 0
|
||||
; srli a2, a0, 0x30
|
||||
; andi a4, a1, 0xf
|
||||
; addi a6, zero, 0x10
|
||||
; sub t3, a6, a4
|
||||
; sll t0, a2, a4
|
||||
; srl t2, a2, t3
|
||||
; beqz a4, 0xc
|
||||
; ori a1, t2, 0
|
||||
; j 8
|
||||
; ori t2, zero, 0
|
||||
; or a0, t3, t2
|
||||
; ori a1, zero, 0
|
||||
; or a0, t0, a1
|
||||
; ret
|
||||
|
||||
function %f7(i8, i8) -> i8 {
|
||||
@@ -365,7 +369,7 @@ block0(v0: i8, v1: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; andi a0,a0,255
|
||||
; andi a2,a1,7
|
||||
; li a4,8
|
||||
; sub a6,a4,a2
|
||||
@@ -430,17 +434,18 @@ block0(v0: i16, v1: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; andi a2,a1,15
|
||||
; srlw a0,a0,a2
|
||||
; slli a0,a0,48
|
||||
; srli a2,a0,48
|
||||
; andi a4,a1,15
|
||||
; srlw a0,a2,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; andi a2, a1, 0xf
|
||||
; srlw a0, a0, a2
|
||||
; srli a2, a0, 0x30
|
||||
; andi a4, a1, 0xf
|
||||
; srlw a0, a2, a4
|
||||
; ret
|
||||
|
||||
function %f11(i8, i8) -> i8 {
|
||||
@@ -451,7 +456,7 @@ block0(v0: i8, v1: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; andi a0,a0,255
|
||||
; andi a2,a1,7
|
||||
; srlw a0,a0,a2
|
||||
; ret
|
||||
@@ -571,17 +576,18 @@ block0(v0: i16, v1: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; andi a2,a1,15
|
||||
; sra a0,a0,a2
|
||||
; slli a0,a0,48
|
||||
; srai a2,a0,48
|
||||
; andi a4,a1,15
|
||||
; sra a0,a2,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srai a0, a0, 0x30
|
||||
; andi a2, a1, 0xf
|
||||
; sra a0, a0, a2
|
||||
; srai a2, a0, 0x30
|
||||
; andi a4, a1, 0xf
|
||||
; sra a0, a2, a4
|
||||
; ret
|
||||
|
||||
function %f19(i8, i8) -> i8 {
|
||||
@@ -592,17 +598,18 @@ block0(v0: i8, v1: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; andi a2,a1,7
|
||||
; sra a0,a0,a2
|
||||
; slli a0,a0,56
|
||||
; srai a2,a0,56
|
||||
; andi a4,a1,7
|
||||
; sra a0,a2,a4
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; andi a2, a1, 7
|
||||
; sra a0, a0, a2
|
||||
; srai a2, a0, 0x38
|
||||
; andi a4, a1, 7
|
||||
; sra a0, a2, a4
|
||||
; ret
|
||||
|
||||
function %f20(i64) -> i64 {
|
||||
@@ -682,32 +689,33 @@ block0(v0: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w t2,a0
|
||||
; li a1,17
|
||||
; andi a3,a1,31
|
||||
; li a5,32
|
||||
; sub a7,a5,a3
|
||||
; sll t4,t2,a3
|
||||
; srl t1,t2,a7
|
||||
; select_reg a0,zero,t1##condition=(a3 eq zero)
|
||||
; or a0,t4,a0
|
||||
; slli t2,a0,32
|
||||
; srli a1,t2,32
|
||||
; li a3,17
|
||||
; andi a5,a3,31
|
||||
; li a7,32
|
||||
; sub t4,a7,a5
|
||||
; sll t1,a1,a5
|
||||
; srl a0,a1,t4
|
||||
; select_reg a2,zero,a0##condition=(a5 eq zero)
|
||||
; or a0,t1,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x20
|
||||
; srli t2, t2, 0x20
|
||||
; addi a1, zero, 0x11
|
||||
; andi a3, a1, 0x1f
|
||||
; addi a5, zero, 0x20
|
||||
; sub a7, a5, a3
|
||||
; sll t4, t2, a3
|
||||
; srl t1, t2, a7
|
||||
; beqz a3, 0xc
|
||||
; ori a0, t1, 0
|
||||
; srli a1, t2, 0x20
|
||||
; addi a3, zero, 0x11
|
||||
; andi a5, a3, 0x1f
|
||||
; addi a7, zero, 0x20
|
||||
; sub t4, a7, a5
|
||||
; sll t1, a1, a5
|
||||
; srl a0, a1, t4
|
||||
; beqz a5, 0xc
|
||||
; ori a2, a0, 0
|
||||
; j 8
|
||||
; ori a0, zero, 0
|
||||
; or a0, t4, a0
|
||||
; ori a2, zero, 0
|
||||
; or a0, t1, a2
|
||||
; ret
|
||||
|
||||
function %f23(i16) -> i16 {
|
||||
@@ -719,32 +727,33 @@ block0(v0: i16):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h t2,a0
|
||||
; li a1,10
|
||||
; andi a3,a1,15
|
||||
; li a5,16
|
||||
; sub a7,a5,a3
|
||||
; sll t4,t2,a3
|
||||
; srl t1,t2,a7
|
||||
; select_reg a0,zero,t1##condition=(a3 eq zero)
|
||||
; or a0,t4,a0
|
||||
; slli t2,a0,48
|
||||
; srli a1,t2,48
|
||||
; li a3,10
|
||||
; andi a5,a3,15
|
||||
; li a7,16
|
||||
; sub t4,a7,a5
|
||||
; sll t1,a1,a5
|
||||
; srl a0,a1,t4
|
||||
; select_reg a2,zero,a0##condition=(a5 eq zero)
|
||||
; or a0,t1,a2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli t2, a0, 0x30
|
||||
; srli t2, t2, 0x30
|
||||
; addi a1, zero, 0xa
|
||||
; andi a3, a1, 0xf
|
||||
; addi a5, zero, 0x10
|
||||
; sub a7, a5, a3
|
||||
; sll t4, t2, a3
|
||||
; srl t1, t2, a7
|
||||
; beqz a3, 0xc
|
||||
; ori a0, t1, 0
|
||||
; srli a1, t2, 0x30
|
||||
; addi a3, zero, 0xa
|
||||
; andi a5, a3, 0xf
|
||||
; addi a7, zero, 0x10
|
||||
; sub t4, a7, a5
|
||||
; sll t1, a1, a5
|
||||
; srl a0, a1, t4
|
||||
; beqz a5, 0xc
|
||||
; ori a2, a0, 0
|
||||
; j 8
|
||||
; ori a0, zero, 0
|
||||
; or a0, t4, a0
|
||||
; ori a2, zero, 0
|
||||
; or a0, t1, a2
|
||||
; ret
|
||||
|
||||
function %f24(i8) -> i8 {
|
||||
@@ -756,7 +765,7 @@ block0(v0: i8):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b t2,a0
|
||||
; andi t2,a0,255
|
||||
; li a1,3
|
||||
; andi a3,a1,7
|
||||
; li a5,8
|
||||
|
||||
@@ -11,23 +11,25 @@ block0(v0: i32):
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,127
|
||||
; uext.w a1,a0
|
||||
; uext.w a3,t2
|
||||
; add a0,a1,a3
|
||||
; srli a7,a0,32
|
||||
; trap_if a7,user0
|
||||
; slli a1,a0,32
|
||||
; srli a3,a1,32
|
||||
; slli a5,t2,32
|
||||
; srli a7,a5,32
|
||||
; add a0,a3,a7
|
||||
; srli t1,a0,32
|
||||
; trap_if t1,user0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 0x7f
|
||||
; slli a1, a0, 0x20
|
||||
; srli a1, a1, 0x20
|
||||
; slli a3, t2, 0x20
|
||||
; srli a3, a3, 0x20
|
||||
; add a0, a1, a3
|
||||
; srli a7, a0, 0x20
|
||||
; beqz a7, 8
|
||||
; srli a3, a1, 0x20
|
||||
; slli a5, t2, 0x20
|
||||
; srli a7, a5, 0x20
|
||||
; add a0, a3, a7
|
||||
; srli t1, a0, 0x20
|
||||
; beqz t1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
@@ -41,23 +43,25 @@ block0(v0: i32):
|
||||
; VCode:
|
||||
; block0:
|
||||
; li t2,127
|
||||
; uext.w a1,t2
|
||||
; uext.w a3,a0
|
||||
; add a0,a1,a3
|
||||
; srli a7,a0,32
|
||||
; trap_if a7,user0
|
||||
; slli a1,t2,32
|
||||
; srli a3,a1,32
|
||||
; slli a5,a0,32
|
||||
; srli a7,a5,32
|
||||
; add a0,a3,a7
|
||||
; srli t1,a0,32
|
||||
; trap_if t1,user0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; addi t2, zero, 0x7f
|
||||
; slli a1, t2, 0x20
|
||||
; srli a1, a1, 0x20
|
||||
; slli a3, a0, 0x20
|
||||
; srli a3, a3, 0x20
|
||||
; add a0, a1, a3
|
||||
; srli a7, a0, 0x20
|
||||
; beqz a7, 8
|
||||
; srli a3, a1, 0x20
|
||||
; slli a5, a0, 0x20
|
||||
; srli a7, a5, 0x20
|
||||
; add a0, a3, a7
|
||||
; srli t1, a0, 0x20
|
||||
; beqz t1, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
@@ -69,22 +73,24 @@ block0(v0: i32, v1: i32):
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; uext.w a2,a1
|
||||
; add a0,a0,a2
|
||||
; srli a6,a0,32
|
||||
; trap_if a6,user0
|
||||
; slli a0,a0,32
|
||||
; srli a2,a0,32
|
||||
; slli a4,a1,32
|
||||
; srli a6,a4,32
|
||||
; add a0,a2,a6
|
||||
; srli t0,a0,32
|
||||
; trap_if t0,user0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; slli a2, a1, 0x20
|
||||
; srli a2, a2, 0x20
|
||||
; add a0, a0, a2
|
||||
; srli a6, a0, 0x20
|
||||
; beqz a6, 8
|
||||
; srli a2, a0, 0x20
|
||||
; slli a4, a1, 0x20
|
||||
; srli a6, a4, 0x20
|
||||
; add a0, a2, a6
|
||||
; srli t0, a0, 0x20
|
||||
; beqz t0, 8
|
||||
; .byte 0x00, 0x00, 0x00, 0x00 ; trap: user0
|
||||
; ret
|
||||
|
||||
|
||||
@@ -1,205 +0,0 @@
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target riscv64
|
||||
|
||||
function %f_u_8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %f_u_8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %f_u_8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
v1 = uextend.i16 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; andi a0, a0, 0xff
|
||||
; ret
|
||||
|
||||
function %f_s_8_64(i8) -> i64 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; ret
|
||||
|
||||
function %f_s_8_32(i8) -> i32 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; ret
|
||||
|
||||
function %f_s_8_16(i8) -> i16 {
|
||||
block0(v0: i8):
|
||||
v1 = sextend.i16 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.b a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x38
|
||||
; srai a0, a0, 0x38
|
||||
; ret
|
||||
|
||||
function %f_u_16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; ret
|
||||
|
||||
function %f_u_16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = uextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srli a0, a0, 0x30
|
||||
; ret
|
||||
|
||||
function %f_s_16_64(i16) -> i64 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srai a0, a0, 0x30
|
||||
; ret
|
||||
|
||||
function %f_s_16_32(i16) -> i32 {
|
||||
block0(v0: i16):
|
||||
v1 = sextend.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.h a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x30
|
||||
; srai a0, a0, 0x30
|
||||
; ret
|
||||
|
||||
function %f_u_32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
v1 = uextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; uext.w a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srli a0, a0, 0x20
|
||||
; ret
|
||||
|
||||
function %f_s_32_64(i32) -> i64 {
|
||||
block0(v0: i32):
|
||||
v1 = sextend.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sext.w a0,a0
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; slli a0, a0, 0x20
|
||||
; srai a0, a0, 0x20
|
||||
; ret
|
||||
|
||||
@@ -41,15 +41,16 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; ld a7,8(a2)
|
||||
;; addi a7,a7,-4
|
||||
;; ugt a7,a6,a7##ty=i64
|
||||
;; ugt a7,t3,a7##ty=i64
|
||||
;; bne a7,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a2)
|
||||
;; add t3,t3,a6
|
||||
;; sw a1,0(t3)
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,t3
|
||||
;; sw a1,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -58,15 +59,16 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; ld a7,8(a1)
|
||||
;; addi a7,a7,-4
|
||||
;; ugt a7,a6,a7##ty=i64
|
||||
;; ugt a7,t3,a7##ty=i64
|
||||
;; bne a7,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a1)
|
||||
;; add t3,t3,a6
|
||||
;; lw a0,0(t3)
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,t3
|
||||
;; lw a0,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a2)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4092
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4092
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a2)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; sw a1,0(a0)
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; sw a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -62,19 +63,20 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a1)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4092
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4092
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a1)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; lw a0,0(a0)
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; lw a0,0(a1)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0004
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a2)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0004
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a2)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,t2
|
||||
;; ld a2,0(a2)
|
||||
;; add a2,a2,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a0
|
||||
;; sw a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
@@ -63,20 +64,21 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0004
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a1)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0004
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a1)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,t2
|
||||
;; lw a0,0(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a1,a1,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a0
|
||||
;; lw a0,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,14 +41,15 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,8(a2)
|
||||
;; uge a6,a5,a6##ty=i64
|
||||
;; uge a6,a7,a6##ty=i64
|
||||
;; bne a6,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a7,0(a2)
|
||||
;; add a7,a7,a5
|
||||
;; sb a1,0(a7)
|
||||
;; ld t3,0(a2)
|
||||
;; add t3,t3,a7
|
||||
;; sb a1,0(t3)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -57,14 +58,15 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,8(a1)
|
||||
;; uge a6,a5,a6##ty=i64
|
||||
;; uge a6,a7,a6##ty=i64
|
||||
;; bne a6,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a7,0(a1)
|
||||
;; add a7,a7,a5
|
||||
;; lbu a0,0(a7)
|
||||
;; ld t3,0(a1)
|
||||
;; add t3,t3,a7
|
||||
;; lbu a0,0(t3)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a2)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4095
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4095
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a2)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; sb a1,0(a0)
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; sb a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -62,19 +63,20 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a1)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4095
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4095
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a1)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; lbu a0,0(a0)
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; lbu a0,0(a1)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0001
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a2)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0001
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a2)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,t2
|
||||
;; ld a2,0(a2)
|
||||
;; add a2,a2,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a0
|
||||
;; sb a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
@@ -63,20 +64,21 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0001
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a1)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0001
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a1)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,t2
|
||||
;; lbu a0,0(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a1,a1,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a0
|
||||
;; lbu a0,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,30 +41,32 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,8(a2)
|
||||
;; addi t4,t4,-4
|
||||
;; ld t0,0(a2)
|
||||
;; add t0,t0,t3
|
||||
;; ugt a7,t3,t4##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; sw a1,0(t3)
|
||||
;; ld t1,0(a2)
|
||||
;; add t1,t1,t0
|
||||
;; ugt t3,t0,t4##ty=i64
|
||||
;; li t0,0
|
||||
;; selectif_spectre_guard t4,t0,t1##test=t3
|
||||
;; sw a1,0(t4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,8(a1)
|
||||
;; addi t4,t4,-4
|
||||
;; ld t0,0(a1)
|
||||
;; add t0,t0,t3
|
||||
;; ugt a7,t3,t4##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; lw a0,0(t3)
|
||||
;; ld t1,0(a1)
|
||||
;; add t1,t1,t0
|
||||
;; ugt t3,t0,t4##ty=i64
|
||||
;; li t0,0
|
||||
;; selectif_spectre_guard t4,t0,t1##test=t3
|
||||
;; lw a0,0(t4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,38 +41,40 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; ld a0,8(a2)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4092
|
||||
;; add a3,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4092
|
||||
;; add a4,a0,t2
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard t2,a2,a0##test=t1
|
||||
;; sw a1,0(t2)
|
||||
;; add a0,a0,a3
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; ugt t2,a3,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sw a1,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; ld a0,8(a1)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4092
|
||||
;; add a2,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4092
|
||||
;; add a3,a0,t2
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a2##ty=i64
|
||||
;; li a1,0
|
||||
;; selectif_spectre_guard t2,a1,a0##test=t1
|
||||
;; lw a0,0(t2)
|
||||
;; add a0,a0,a2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; ugt t2,a2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lw a0,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,40 +41,42 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0004
|
||||
;; add t2,a0,t0
|
||||
;; ult a3,t2,a0##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a2)
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0004
|
||||
;; add a0,a3,t1
|
||||
;; ult a4,a0,a3##ty=i64
|
||||
;; trap_if a4,heap_oob
|
||||
;; ld a4,8(a2)
|
||||
;; ld a2,0(a2)
|
||||
;; add a0,a2,a0
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,a2
|
||||
;; ugt t2,t2,a3##ty=i64
|
||||
;; add a2,a2,a3
|
||||
;; auipc a3,0; ld a3,12(a3); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a3
|
||||
;; ugt a0,a0,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sw a1,0(a0)
|
||||
;; selectif_spectre_guard a4,a3,a2##test=a0
|
||||
;; sw a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0004
|
||||
;; add t2,a0,t0
|
||||
;; ult a2,t2,a0##ty=i64
|
||||
;; trap_if a2,heap_oob
|
||||
;; ld a2,8(a1)
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0004
|
||||
;; add a0,a2,t1
|
||||
;; ult a3,a0,a2##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a0,a1,a0
|
||||
;; auipc a1,0; ld a1,12(a1); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,a1
|
||||
;; ugt t2,t2,a2##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lw a0,0(a0)
|
||||
;; add a1,a1,a2
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a2
|
||||
;; ugt a0,a0,a3##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a1,a3,a2##test=a0
|
||||
;; lw a0,0(a1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,28 +41,30 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a7,a0
|
||||
;; slli a7,a0,32
|
||||
;; srli t4,a7,32
|
||||
;; ld t3,8(a2)
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,a7
|
||||
;; uge a6,a7,t3##ty=i64
|
||||
;; li t3,0
|
||||
;; selectif_spectre_guard a7,t3,t4##test=a6
|
||||
;; sb a1,0(a7)
|
||||
;; ld t0,0(a2)
|
||||
;; add t0,t0,t4
|
||||
;; uge a7,t4,t3##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; sb a1,0(t3)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a7,a0
|
||||
;; slli a7,a0,32
|
||||
;; srli t4,a7,32
|
||||
;; ld t3,8(a1)
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,a7
|
||||
;; uge a6,a7,t3##ty=i64
|
||||
;; li t3,0
|
||||
;; selectif_spectre_guard a7,t3,t4##test=a6
|
||||
;; lbu a0,0(a7)
|
||||
;; ld t0,0(a1)
|
||||
;; add t0,t0,t4
|
||||
;; uge a7,t4,t3##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; lbu a0,0(t3)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,38 +41,40 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; ld a0,8(a2)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4095
|
||||
;; add a3,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4095
|
||||
;; add a4,a0,t2
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard t2,a2,a0##test=t1
|
||||
;; sb a1,0(t2)
|
||||
;; add a0,a0,a3
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; ugt t2,a3,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sb a1,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; ld a0,8(a1)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4095
|
||||
;; add a2,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4095
|
||||
;; add a3,a0,t2
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a2##ty=i64
|
||||
;; li a1,0
|
||||
;; selectif_spectre_guard t2,a1,a0##test=t1
|
||||
;; lbu a0,0(t2)
|
||||
;; add a0,a0,a2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; ugt t2,a2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lbu a0,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,40 +41,42 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0001
|
||||
;; add t2,a0,t0
|
||||
;; ult a3,t2,a0##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a2)
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0001
|
||||
;; add a0,a3,t1
|
||||
;; ult a4,a0,a3##ty=i64
|
||||
;; trap_if a4,heap_oob
|
||||
;; ld a4,8(a2)
|
||||
;; ld a2,0(a2)
|
||||
;; add a0,a2,a0
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,a2
|
||||
;; ugt t2,t2,a3##ty=i64
|
||||
;; add a2,a2,a3
|
||||
;; auipc a3,0; ld a3,12(a3); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a3
|
||||
;; ugt a0,a0,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sb a1,0(a0)
|
||||
;; selectif_spectre_guard a4,a3,a2##test=a0
|
||||
;; sb a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0001
|
||||
;; add t2,a0,t0
|
||||
;; ult a2,t2,a0##ty=i64
|
||||
;; trap_if a2,heap_oob
|
||||
;; ld a2,8(a1)
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0001
|
||||
;; add a0,a2,t1
|
||||
;; ult a3,a0,a2##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a0,a1,a0
|
||||
;; auipc a1,0; ld a1,12(a1); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,a1
|
||||
;; ugt t2,t2,a2##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lbu a0,0(a0)
|
||||
;; add a1,a1,a2
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a2
|
||||
;; ugt a0,a0,a3##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a1,a3,a2##test=a0
|
||||
;; lbu a0,0(a1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,15 +41,16 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; ld a7,8(a2)
|
||||
;; addi a7,a7,-4
|
||||
;; ugt a7,a6,a7##ty=i64
|
||||
;; ugt a7,t3,a7##ty=i64
|
||||
;; bne a7,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a2)
|
||||
;; add t3,t3,a6
|
||||
;; sw a1,0(t3)
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,t3
|
||||
;; sw a1,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -58,15 +59,16 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; ld a7,8(a1)
|
||||
;; addi a7,a7,-4
|
||||
;; ugt a7,a6,a7##ty=i64
|
||||
;; ugt a7,t3,a7##ty=i64
|
||||
;; bne a7,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a1)
|
||||
;; add t3,t3,a6
|
||||
;; lw a0,0(t3)
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,t3
|
||||
;; lw a0,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a2)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4092
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4092
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a2)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; sw a1,0(a0)
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; sw a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -62,19 +63,20 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a1)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4092
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4092
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a1)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; lw a0,0(a0)
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; lw a0,0(a1)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0004
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a2)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0004
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a2)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,t2
|
||||
;; ld a2,0(a2)
|
||||
;; add a2,a2,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a0
|
||||
;; sw a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
@@ -63,20 +64,21 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0004
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a1)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0004
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a1)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,t2
|
||||
;; lw a0,0(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a1,a1,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a0
|
||||
;; lw a0,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,14 +41,15 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,8(a2)
|
||||
;; uge a6,a5,a6##ty=i64
|
||||
;; uge a6,a7,a6##ty=i64
|
||||
;; bne a6,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a7,0(a2)
|
||||
;; add a7,a7,a5
|
||||
;; sb a1,0(a7)
|
||||
;; ld t3,0(a2)
|
||||
;; add t3,t3,a7
|
||||
;; sb a1,0(t3)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -57,14 +58,15 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,8(a1)
|
||||
;; uge a6,a5,a6##ty=i64
|
||||
;; uge a6,a7,a6##ty=i64
|
||||
;; bne a6,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a7,0(a1)
|
||||
;; add a7,a7,a5
|
||||
;; lbu a0,0(a7)
|
||||
;; ld t3,0(a1)
|
||||
;; add t3,t3,a7
|
||||
;; lbu a0,0(t3)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a2)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4095
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4095
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a2)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; sb a1,0(a0)
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; sb a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -62,19 +63,20 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,8(a1)
|
||||
;; lui t4,1048575
|
||||
;; addi t4,t4,4095
|
||||
;; add t2,t1,t4
|
||||
;; ugt t1,t0,t2##ty=i64
|
||||
;; lui t0,1048575
|
||||
;; addi t0,t0,4095
|
||||
;; add a0,t1,t0
|
||||
;; ugt t1,t2,a0##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t2,0(a1)
|
||||
;; add t2,t2,t0
|
||||
;; lui t1,1
|
||||
;; add a0,t2,t1
|
||||
;; lbu a0,0(a0)
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; lbu a0,0(a1)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,19 +41,20 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0001
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a2)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0001
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a2)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,t2
|
||||
;; ld a2,0(a2)
|
||||
;; add a2,a2,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a0
|
||||
;; sb a1,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
@@ -63,20 +64,21 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; auipc t3,0; ld t3,12(t3); j 12; .8byte 0xffff0001
|
||||
;; add t1,t0,t3
|
||||
;; ult t2,t1,t0##ty=i64
|
||||
;; trap_if t2,heap_oob
|
||||
;; ld t2,8(a1)
|
||||
;; ugt t1,t1,t2##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; auipc t4,0; ld t4,12(t4); j 12; .8byte 0xffff0001
|
||||
;; add t1,t2,t4
|
||||
;; ult a0,t1,t2##ty=i64
|
||||
;; trap_if a0,heap_oob
|
||||
;; ld a0,8(a1)
|
||||
;; ugt a0,t1,a0##ty=i64
|
||||
;; bne a0,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t0
|
||||
;; auipc t2,0; ld t2,12(t2); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,t2
|
||||
;; lbu a0,0(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a1,a1,t2
|
||||
;; auipc a0,0; ld a0,12(a0); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a0
|
||||
;; lbu a0,0(a2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -41,30 +41,32 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,8(a2)
|
||||
;; addi t4,t4,-4
|
||||
;; ld t0,0(a2)
|
||||
;; add t0,t0,t3
|
||||
;; ugt a7,t3,t4##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; sw a1,0(t3)
|
||||
;; ld t1,0(a2)
|
||||
;; add t1,t1,t0
|
||||
;; ugt t3,t0,t4##ty=i64
|
||||
;; li t0,0
|
||||
;; selectif_spectre_guard t4,t0,t1##test=t3
|
||||
;; sw a1,0(t4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,8(a1)
|
||||
;; addi t4,t4,-4
|
||||
;; ld t0,0(a1)
|
||||
;; add t0,t0,t3
|
||||
;; ugt a7,t3,t4##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; lw a0,0(t3)
|
||||
;; ld t1,0(a1)
|
||||
;; add t1,t1,t0
|
||||
;; ugt t3,t0,t4##ty=i64
|
||||
;; li t0,0
|
||||
;; selectif_spectre_guard t4,t0,t1##test=t3
|
||||
;; lw a0,0(t4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,38 +41,40 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; ld a0,8(a2)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4092
|
||||
;; add a3,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4092
|
||||
;; add a4,a0,t2
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard t2,a2,a0##test=t1
|
||||
;; sw a1,0(t2)
|
||||
;; add a0,a0,a3
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; ugt t2,a3,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sw a1,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; ld a0,8(a1)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4092
|
||||
;; add a2,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4092
|
||||
;; add a3,a0,t2
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a2##ty=i64
|
||||
;; li a1,0
|
||||
;; selectif_spectre_guard t2,a1,a0##test=t1
|
||||
;; lw a0,0(t2)
|
||||
;; add a0,a0,a2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; ugt t2,a2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lw a0,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,40 +41,42 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0004
|
||||
;; add t2,a0,t0
|
||||
;; ult a3,t2,a0##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a2)
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0004
|
||||
;; add a0,a3,t1
|
||||
;; ult a4,a0,a3##ty=i64
|
||||
;; trap_if a4,heap_oob
|
||||
;; ld a4,8(a2)
|
||||
;; ld a2,0(a2)
|
||||
;; add a0,a2,a0
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,a2
|
||||
;; ugt t2,t2,a3##ty=i64
|
||||
;; add a2,a2,a3
|
||||
;; auipc a3,0; ld a3,12(a3); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a3
|
||||
;; ugt a0,a0,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sw a1,0(a0)
|
||||
;; selectif_spectre_guard a4,a3,a2##test=a0
|
||||
;; sw a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0004
|
||||
;; add t2,a0,t0
|
||||
;; ult a2,t2,a0##ty=i64
|
||||
;; trap_if a2,heap_oob
|
||||
;; ld a2,8(a1)
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0004
|
||||
;; add a0,a2,t1
|
||||
;; ult a3,a0,a2##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a0,a1,a0
|
||||
;; auipc a1,0; ld a1,12(a1); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,a1
|
||||
;; ugt t2,t2,a2##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lw a0,0(a0)
|
||||
;; add a1,a1,a2
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a2
|
||||
;; ugt a0,a0,a3##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a1,a3,a2##test=a0
|
||||
;; lw a0,0(a1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,28 +41,30 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a7,a0
|
||||
;; slli a7,a0,32
|
||||
;; srli t4,a7,32
|
||||
;; ld t3,8(a2)
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,a7
|
||||
;; uge a6,a7,t3##ty=i64
|
||||
;; li t3,0
|
||||
;; selectif_spectre_guard a7,t3,t4##test=a6
|
||||
;; sb a1,0(a7)
|
||||
;; ld t0,0(a2)
|
||||
;; add t0,t0,t4
|
||||
;; uge a7,t4,t3##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; sb a1,0(t3)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a7,a0
|
||||
;; slli a7,a0,32
|
||||
;; srli t4,a7,32
|
||||
;; ld t3,8(a1)
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,a7
|
||||
;; uge a6,a7,t3##ty=i64
|
||||
;; li t3,0
|
||||
;; selectif_spectre_guard a7,t3,t4##test=a6
|
||||
;; lbu a0,0(a7)
|
||||
;; ld t0,0(a1)
|
||||
;; add t0,t0,t4
|
||||
;; uge a7,t4,t3##ty=i64
|
||||
;; li t4,0
|
||||
;; selectif_spectre_guard t3,t4,t0##test=a7
|
||||
;; lbu a0,0(t3)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,38 +41,40 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; ld a0,8(a2)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4095
|
||||
;; add a3,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4095
|
||||
;; add a4,a0,t2
|
||||
;; ld a0,0(a2)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard t2,a2,a0##test=t1
|
||||
;; sb a1,0(t2)
|
||||
;; add a0,a0,a3
|
||||
;; lui t2,1
|
||||
;; add a2,a0,t2
|
||||
;; ugt t2,a3,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sb a1,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t2,a0
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; ld a0,8(a1)
|
||||
;; lui t1,1048575
|
||||
;; addi t1,t1,4095
|
||||
;; add a2,a0,t1
|
||||
;; lui t2,1048575
|
||||
;; addi t2,t2,4095
|
||||
;; add a3,a0,t2
|
||||
;; ld a0,0(a1)
|
||||
;; add a0,a0,t2
|
||||
;; lui t1,1
|
||||
;; add a0,a0,t1
|
||||
;; ugt t1,t2,a2##ty=i64
|
||||
;; li a1,0
|
||||
;; selectif_spectre_guard t2,a1,a0##test=t1
|
||||
;; lbu a0,0(t2)
|
||||
;; add a0,a0,a2
|
||||
;; lui t2,1
|
||||
;; add a1,a0,t2
|
||||
;; ugt t2,a2,a3##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lbu a0,0(a0)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -41,40 +41,42 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0001
|
||||
;; add t2,a0,t0
|
||||
;; ult a3,t2,a0##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a2)
|
||||
;; slli t2,a0,32
|
||||
;; srli a3,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0001
|
||||
;; add a0,a3,t1
|
||||
;; ult a4,a0,a3##ty=i64
|
||||
;; trap_if a4,heap_oob
|
||||
;; ld a4,8(a2)
|
||||
;; ld a2,0(a2)
|
||||
;; add a0,a2,a0
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a0,a2
|
||||
;; ugt t2,t2,a3##ty=i64
|
||||
;; add a2,a2,a3
|
||||
;; auipc a3,0; ld a3,12(a3); j 12; .8byte 0xffff0000
|
||||
;; add a2,a2,a3
|
||||
;; ugt a0,a0,a4##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a0,a3,a2##test=t2
|
||||
;; sb a1,0(a0)
|
||||
;; selectif_spectre_guard a4,a3,a2##test=a0
|
||||
;; sb a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a0,a0
|
||||
;; auipc t0,0; ld t0,12(t0); j 12; .8byte 0xffff0001
|
||||
;; add t2,a0,t0
|
||||
;; ult a2,t2,a0##ty=i64
|
||||
;; trap_if a2,heap_oob
|
||||
;; ld a2,8(a1)
|
||||
;; slli t2,a0,32
|
||||
;; srli a2,t2,32
|
||||
;; auipc t1,0; ld t1,12(t1); j 12; .8byte 0xffff0001
|
||||
;; add a0,a2,t1
|
||||
;; ult a3,a0,a2##ty=i64
|
||||
;; trap_if a3,heap_oob
|
||||
;; ld a3,8(a1)
|
||||
;; ld a1,0(a1)
|
||||
;; add a0,a1,a0
|
||||
;; auipc a1,0; ld a1,12(a1); j 12; .8byte 0xffff0000
|
||||
;; add a1,a0,a1
|
||||
;; ugt t2,t2,a2##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard a0,a2,a1##test=t2
|
||||
;; lbu a0,0(a0)
|
||||
;; add a1,a1,a2
|
||||
;; auipc a2,0; ld a2,12(a2); j 12; .8byte 0xffff0000
|
||||
;; add a2,a1,a2
|
||||
;; ugt a0,a0,a3##ty=i64
|
||||
;; li a3,0
|
||||
;; selectif_spectre_guard a1,a3,a2##test=a0
|
||||
;; lbu a0,0(a1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,15 +39,16 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; lui a5,65536
|
||||
;; addi a5,a5,4092
|
||||
;; ugt t3,a6,a5##ty=i64
|
||||
;; bne t3,zero,taken(label1),not_taken(label2)
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4092
|
||||
;; ugt t4,t3,a6##ty=i64
|
||||
;; bne t4,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a2)
|
||||
;; add t3,t3,a6
|
||||
;; sw a1,0(t3)
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,t3
|
||||
;; sw a1,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -56,15 +57,16 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; lui a5,65536
|
||||
;; addi a5,a5,4092
|
||||
;; ugt t3,a6,a5##ty=i64
|
||||
;; bne t3,zero,taken(label1),not_taken(label2)
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4092
|
||||
;; ugt t4,t3,a6##ty=i64
|
||||
;; bne t4,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a1)
|
||||
;; add t3,t3,a6
|
||||
;; lw a0,0(t3)
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,t3
|
||||
;; lw a0,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -39,17 +39,18 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; lui a7,65535
|
||||
;; addi a7,a7,4092
|
||||
;; ugt t0,t3,a7##ty=i64
|
||||
;; bne t0,zero,taken(label1),not_taken(label2)
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4092
|
||||
;; ugt t1,t0,t3##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t0,0(a2)
|
||||
;; add t0,t0,t3
|
||||
;; lui t4,1
|
||||
;; add t1,t0,t4
|
||||
;; sw a1,0(t1)
|
||||
;; ld t1,0(a2)
|
||||
;; add t1,t1,t0
|
||||
;; lui t0,1
|
||||
;; add t2,t1,t0
|
||||
;; sw a1,0(t2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -58,17 +59,18 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; lui a7,65535
|
||||
;; addi a7,a7,4092
|
||||
;; ugt t0,t3,a7##ty=i64
|
||||
;; bne t0,zero,taken(label1),not_taken(label2)
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4092
|
||||
;; ugt t1,t0,t3##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t0,0(a1)
|
||||
;; add t0,t0,t3
|
||||
;; lui t4,1
|
||||
;; add t1,t0,t4
|
||||
;; lw a0,0(t1)
|
||||
;; ld t1,0(a1)
|
||||
;; add t1,t1,t0
|
||||
;; lui t0,1
|
||||
;; add t2,t1,t0
|
||||
;; lw a0,0(t2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -39,15 +39,16 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; lui a5,65536
|
||||
;; addi a5,a5,4095
|
||||
;; ugt t3,a6,a5##ty=i64
|
||||
;; bne t3,zero,taken(label1),not_taken(label2)
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4095
|
||||
;; ugt t4,t3,a6##ty=i64
|
||||
;; bne t4,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a2)
|
||||
;; add t3,t3,a6
|
||||
;; sb a1,0(t3)
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,t3
|
||||
;; sb a1,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -56,15 +57,16 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a6,a0
|
||||
;; lui a5,65536
|
||||
;; addi a5,a5,4095
|
||||
;; ugt t3,a6,a5##ty=i64
|
||||
;; bne t3,zero,taken(label1),not_taken(label2)
|
||||
;; slli a6,a0,32
|
||||
;; srli t3,a6,32
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4095
|
||||
;; ugt t4,t3,a6##ty=i64
|
||||
;; bne t4,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t3,0(a1)
|
||||
;; add t3,t3,a6
|
||||
;; lbu a0,0(t3)
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,t3
|
||||
;; lbu a0,0(t4)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -39,17 +39,18 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; lui a7,65535
|
||||
;; addi a7,a7,4095
|
||||
;; ugt t0,t3,a7##ty=i64
|
||||
;; bne t0,zero,taken(label1),not_taken(label2)
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4095
|
||||
;; ugt t1,t0,t3##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t0,0(a2)
|
||||
;; add t0,t0,t3
|
||||
;; lui t4,1
|
||||
;; add t1,t0,t4
|
||||
;; sb a1,0(t1)
|
||||
;; ld t1,0(a2)
|
||||
;; add t1,t1,t0
|
||||
;; lui t0,1
|
||||
;; add t2,t1,t0
|
||||
;; sb a1,0(t2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
@@ -58,17 +59,18 @@
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; lui a7,65535
|
||||
;; addi a7,a7,4095
|
||||
;; ugt t0,t3,a7##ty=i64
|
||||
;; bne t0,zero,taken(label1),not_taken(label2)
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4095
|
||||
;; ugt t1,t0,t3##ty=i64
|
||||
;; bne t1,zero,taken(label1),not_taken(label2)
|
||||
;; block2:
|
||||
;; ld t0,0(a1)
|
||||
;; add t0,t0,t3
|
||||
;; lui t4,1
|
||||
;; add t1,t0,t4
|
||||
;; lbu a0,0(t1)
|
||||
;; ld t1,0(a1)
|
||||
;; add t1,t1,t0
|
||||
;; lui t0,1
|
||||
;; add t2,t1,t0
|
||||
;; lbu a0,0(t2)
|
||||
;; j label3
|
||||
;; block3:
|
||||
;; ret
|
||||
|
||||
@@ -39,30 +39,32 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,t3
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4092
|
||||
;; ugt t0,t3,a6##ty=i64
|
||||
;; li t1,0
|
||||
;; selectif_spectre_guard t3,t1,t4##test=t0
|
||||
;; sw a1,0(t3)
|
||||
;; add t4,t4,t0
|
||||
;; lui a7,65536
|
||||
;; addi a7,a7,4092
|
||||
;; ugt t0,t0,a7##ty=i64
|
||||
;; li t2,0
|
||||
;; selectif_spectre_guard t1,t2,t4##test=t0
|
||||
;; sw a1,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,t3
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4092
|
||||
;; ugt t0,t3,a6##ty=i64
|
||||
;; li t1,0
|
||||
;; selectif_spectre_guard t3,t1,t4##test=t0
|
||||
;; lw a0,0(t3)
|
||||
;; add t4,t4,t0
|
||||
;; lui a7,65536
|
||||
;; addi a7,a7,4092
|
||||
;; ugt t0,t0,a7##ty=i64
|
||||
;; li t2,0
|
||||
;; selectif_spectre_guard t1,t2,t4##test=t0
|
||||
;; lw a0,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,34 +39,36 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,0(a2)
|
||||
;; add t1,t1,t0
|
||||
;; lui t4,1
|
||||
;; add t1,t1,t4
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4092
|
||||
;; ugt t2,t0,t3##ty=i64
|
||||
;; li a0,0
|
||||
;; selectif_spectre_guard t0,a0,t1##test=t2
|
||||
;; sw a1,0(t0)
|
||||
;; add t1,t1,t2
|
||||
;; lui t0,1
|
||||
;; add a0,t1,t0
|
||||
;; lui t4,65535
|
||||
;; addi t4,t4,4092
|
||||
;; ugt t2,t2,t4##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard t1,a2,a0##test=t2
|
||||
;; sw a1,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,0(a1)
|
||||
;; add t1,t1,t0
|
||||
;; lui t4,1
|
||||
;; add t1,t1,t4
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4092
|
||||
;; ugt t2,t0,t3##ty=i64
|
||||
;; li a0,0
|
||||
;; selectif_spectre_guard t0,a0,t1##test=t2
|
||||
;; lw a0,0(t0)
|
||||
;; add t1,t1,t2
|
||||
;; lui t0,1
|
||||
;; add a0,t1,t0
|
||||
;; lui t4,65535
|
||||
;; addi t4,t4,4092
|
||||
;; ugt t2,t2,t4##ty=i64
|
||||
;; li a1,0
|
||||
;; selectif_spectre_guard t1,a1,a0##test=t2
|
||||
;; lw a0,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,30 +39,32 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,0(a2)
|
||||
;; add t4,t4,t3
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4095
|
||||
;; ugt t0,t3,a6##ty=i64
|
||||
;; li t1,0
|
||||
;; selectif_spectre_guard t3,t1,t4##test=t0
|
||||
;; sb a1,0(t3)
|
||||
;; add t4,t4,t0
|
||||
;; lui a7,65536
|
||||
;; addi a7,a7,4095
|
||||
;; ugt t0,t0,a7##ty=i64
|
||||
;; li t2,0
|
||||
;; selectif_spectre_guard t1,t2,t4##test=t0
|
||||
;; sb a1,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t3,a0
|
||||
;; slli t3,a0,32
|
||||
;; srli t0,t3,32
|
||||
;; ld t4,0(a1)
|
||||
;; add t4,t4,t3
|
||||
;; lui a6,65536
|
||||
;; addi a6,a6,4095
|
||||
;; ugt t0,t3,a6##ty=i64
|
||||
;; li t1,0
|
||||
;; selectif_spectre_guard t3,t1,t4##test=t0
|
||||
;; lbu a0,0(t3)
|
||||
;; add t4,t4,t0
|
||||
;; lui a7,65536
|
||||
;; addi a7,a7,4095
|
||||
;; ugt t0,t0,a7##ty=i64
|
||||
;; li t2,0
|
||||
;; selectif_spectre_guard t1,t2,t4##test=t0
|
||||
;; lbu a0,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,34 +39,36 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,0(a2)
|
||||
;; add t1,t1,t0
|
||||
;; lui t4,1
|
||||
;; add t1,t1,t4
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4095
|
||||
;; ugt t2,t0,t3##ty=i64
|
||||
;; li a0,0
|
||||
;; selectif_spectre_guard t0,a0,t1##test=t2
|
||||
;; sb a1,0(t0)
|
||||
;; add t1,t1,t2
|
||||
;; lui t0,1
|
||||
;; add a0,t1,t0
|
||||
;; lui t4,65535
|
||||
;; addi t4,t4,4095
|
||||
;; ugt t2,t2,t4##ty=i64
|
||||
;; li a2,0
|
||||
;; selectif_spectre_guard t1,a2,a0##test=t2
|
||||
;; sb a1,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w t0,a0
|
||||
;; slli t0,a0,32
|
||||
;; srli t2,t0,32
|
||||
;; ld t1,0(a1)
|
||||
;; add t1,t1,t0
|
||||
;; lui t4,1
|
||||
;; add t1,t1,t4
|
||||
;; lui t3,65535
|
||||
;; addi t3,t3,4095
|
||||
;; ugt t2,t0,t3##ty=i64
|
||||
;; li a0,0
|
||||
;; selectif_spectre_guard t0,a0,t1##test=t2
|
||||
;; lbu a0,0(t0)
|
||||
;; add t1,t1,t2
|
||||
;; lui t0,1
|
||||
;; add a0,t1,t0
|
||||
;; lui t4,65535
|
||||
;; addi t4,t4,4095
|
||||
;; ugt t2,t2,t4##ty=i64
|
||||
;; li a1,0
|
||||
;; selectif_spectre_guard t1,a1,a0##test=t2
|
||||
;; lbu a0,0(t1)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,20 +39,22 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a2)
|
||||
;; add a3,a4,a3
|
||||
;; sw a1,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; sw a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a1)
|
||||
;; add a3,a4,a3
|
||||
;; lw a0,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; lw a0,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,24 +39,26 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a2)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; sw a1,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; sw a1,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a1)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; lw a0,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; lw a0,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,20 +39,22 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a2)
|
||||
;; add a3,a4,a3
|
||||
;; sb a1,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; sb a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a1)
|
||||
;; add a3,a4,a3
|
||||
;; lbu a0,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; lbu a0,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,24 +39,26 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a2)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; sb a1,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; sb a1,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a1)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; lbu a0,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; lbu a0,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,20 +39,22 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a2)
|
||||
;; add a3,a4,a3
|
||||
;; sw a1,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; sw a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a1)
|
||||
;; add a3,a4,a3
|
||||
;; lw a0,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; lw a0,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,24 +39,26 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a2)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; sw a1,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; sw a1,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a1)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; lw a0,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; lw a0,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,20 +39,22 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a2)
|
||||
;; add a3,a4,a3
|
||||
;; sb a1,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; sb a1,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a3,a0
|
||||
;; slli a3,a0,32
|
||||
;; srli a5,a3,32
|
||||
;; ld a4,0(a1)
|
||||
;; add a3,a4,a3
|
||||
;; lbu a0,0(a3)
|
||||
;; add a4,a4,a5
|
||||
;; lbu a0,0(a4)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -39,24 +39,26 @@
|
||||
|
||||
;; function u0:0:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a2)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; sb a1,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; sb a1,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;;
|
||||
;; function u0:1:
|
||||
;; block0:
|
||||
;; uext.w a5,a0
|
||||
;; slli a5,a0,32
|
||||
;; srli a7,a5,32
|
||||
;; ld a6,0(a1)
|
||||
;; add a5,a6,a5
|
||||
;; lui a4,1
|
||||
;; add a6,a5,a4
|
||||
;; lbu a0,0(a6)
|
||||
;; add a6,a6,a7
|
||||
;; lui a5,1
|
||||
;; add a7,a6,a5
|
||||
;; lbu a0,0(a7)
|
||||
;; j label1
|
||||
;; block1:
|
||||
;; ret
|
||||
;; ret
|
||||
|
||||
@@ -3,7 +3,9 @@ test run
|
||||
target aarch64
|
||||
target s390x
|
||||
target x86_64
|
||||
target riscv64
|
||||
target riscv64
|
||||
target riscv64 has_zbb
|
||||
target riscv64 has_zbkb
|
||||
|
||||
;;;; basic uextend
|
||||
|
||||
|
||||
@@ -5,6 +5,8 @@ target aarch64
|
||||
target s390x
|
||||
target x86_64
|
||||
target riscv64
|
||||
target riscv64 has_zbb
|
||||
target riscv64 has_zbkb
|
||||
|
||||
function %i128_uextend_i64(i64) -> i128 {
|
||||
block0(v0: i64):
|
||||
|
||||
Reference in New Issue
Block a user