This switches from a custom list of architectures to use the target-lexicon crate. - "set is_64bit=1; isa x86" is replaced with "target x86_64", and similar for other architectures, and the `is_64bit` flag is removed entirely. - The `is_compressed` flag is removed too; it's no longer being used to control REX prefixes on x86-64, ARM and Thumb are separate architectures in target-lexicon, and we can figure out how to select RISC-V compressed encodings when we're ready.
81 lines
1.5 KiB
Plaintext
81 lines
1.5 KiB
Plaintext
test preopt
|
|
target i686
|
|
|
|
function %iadd_imm(i32) -> i32 {
|
|
ebb0(v0: i32):
|
|
v1 = iconst.i32 2
|
|
v2 = iadd v0, v1
|
|
return v2
|
|
}
|
|
; sameln: function %iadd_imm
|
|
; nextln: ebb0(v0: i32):
|
|
; nextln: v1 = iconst.i32 2
|
|
; nextln: v2 = iadd_imm v0, 2
|
|
; nextln: return v2
|
|
; nextln: }
|
|
|
|
function %isub_imm(i32) -> i32 {
|
|
ebb0(v0: i32):
|
|
v1 = iconst.i32 2
|
|
v2 = isub v0, v1
|
|
return v2
|
|
}
|
|
; sameln: function %isub_imm
|
|
; nextln: ebb0(v0: i32):
|
|
; nextln: v1 = iconst.i32 2
|
|
; nextln: v2 = iadd_imm v0, -2
|
|
; nextln: return v2
|
|
; nextln: }
|
|
|
|
function %icmp_imm(i32) -> i32 {
|
|
ebb0(v0: i32):
|
|
v1 = iconst.i32 2
|
|
v2 = icmp slt v0, v1
|
|
v3 = bint.i32 v2
|
|
return v3
|
|
}
|
|
; sameln: function %icmp_imm
|
|
; nextln: ebb0(v0: i32):
|
|
; nextln: v1 = iconst.i32 2
|
|
; nextln: v2 = icmp_imm slt v0, 2
|
|
; nextln: v3 = bint.i32 v2
|
|
; nextln: return v3
|
|
; nextln: }
|
|
|
|
function %brz_bint(i32) {
|
|
ebb0(v0: i32):
|
|
v3 = icmp_imm slt v0, 0
|
|
v1 = bint.i32 v3
|
|
v2 = select v1, v1, v1
|
|
trapz v1, user0
|
|
brz v1, ebb1
|
|
jump ebb2
|
|
|
|
ebb1:
|
|
return
|
|
|
|
ebb2:
|
|
return
|
|
}
|
|
; sameln: function %brz_bint
|
|
; nextln: (v0: i32):
|
|
; nextln: v3 = icmp_imm slt v0, 0
|
|
; nextln: v1 = bint.i32 v3
|
|
; nextln: v2 = select v3, v1, v1
|
|
; nextln: trapz v3, user0
|
|
; nextln: brz v3, ebb1
|
|
; nextln: jump ebb2
|
|
|
|
function %irsub_imm(i32) -> i32 {
|
|
ebb0(v0: i32):
|
|
v1 = iconst.i32 2
|
|
v2 = isub v1, v0
|
|
return v2
|
|
}
|
|
; sameln: function %irsub_imm
|
|
; nextln: ebb0(v0: i32):
|
|
; nextln: v1 = iconst.i32 2
|
|
; nextln: v2 = irsub_imm v0, 2
|
|
; nextln: return v2
|
|
; nextln: }
|