Add filetest for unexpected imm12_from_negated aarch64 lowering (#5904)
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
;; Test our lowerings that try to fit negated iconst values in immediates, like
|
||||
;; `x + -1 => sub x 0x1`. Currently, not working as expected for i32 and i16.
|
||||
|
||||
test compile precise-output
|
||||
set unwind_info=false
|
||||
target aarch64
|
||||
|
||||
;; Result uses immediate as expected
|
||||
function %c(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
v1 = iconst.i64 -1
|
||||
v3 = iadd v0, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; sub x0, x0, #1
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; sub x0, x0, #1
|
||||
; ret
|
||||
|
||||
;; 4294967295 is zero-extended i32 -1
|
||||
;; Result should use immediate but currently doesn't
|
||||
function %b(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
v1 = iconst.i32 4294967295
|
||||
v3 = iadd v0, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movn w2, #0
|
||||
; add w0, w0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, #-1
|
||||
; add w0, w0, w2
|
||||
; ret
|
||||
|
||||
;; 65535 is zero-extended i16 -1
|
||||
;; Result should use immediate but currently doesn't
|
||||
function %a(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
v1 = iconst.i16 65535
|
||||
v3 = iadd v0, v1
|
||||
return v3
|
||||
}
|
||||
|
||||
; VCode:
|
||||
; block0:
|
||||
; movz w2, #65535
|
||||
; add w0, w0, w2
|
||||
; ret
|
||||
;
|
||||
; Disassembled:
|
||||
; block0: ; offset 0x0
|
||||
; mov w2, #0xffff
|
||||
; add w0, w0, w2
|
||||
; ret
|
||||
Reference in New Issue
Block a user