Legalize 64 bit shifts on x86_32 using PSLLQ/PSRLQ.

Co-authored-by: iximeow <git@iximeow.net>
This commit is contained in:
whitequark
2020-04-28 01:32:02 +00:00
committed by iximeow
parent 2331403741
commit 4ec16fa057
4 changed files with 133 additions and 1 deletions

View File

@@ -0,0 +1,51 @@
test compile
set enable_simd
target i686 haswell
function u0:1(i32) -> i64 system_v {
block1(v0: i32):
v1 = load.i64 notrap aligned v0+0
v2 = load.i32 notrap aligned v0+16
v3 = ishl v1, v2
return v3
}
function u0:2(i32) -> i64 system_v {
block1(v0: i32):
v1 = load.i64 notrap aligned v0+0
v2 = load.i64 notrap aligned v0+16
v3 = ishl v1, v2
return v3
}
function u0:3(i32) -> i32 system_v {
block1(v0: i32):
v1 = load.i32 notrap aligned v0+0
v2 = load.i64 notrap aligned v0+16
v3 = ishl v1, v2
return v3
}
function u0:4(i32) -> i64 system_v {
block1(v0: i32):
v1 = load.i64 notrap aligned v0+0
v2 = load.i32 notrap aligned v0+16
v3 = ushr v1, v2
return v3
}
function u0:5(i32) -> i64 system_v {
block1(v0: i32):
v1 = load.i64 notrap aligned v0+0
v2 = load.i64 notrap aligned v0+16
v3 = ushr v1, v2
return v3
}
function u0:6(i32) -> i32 system_v {
block1(v0: i32):
v1 = load.i32 notrap aligned v0+0
v2 = load.i64 notrap aligned v0+16
v3 = ushr v1, v2
return v3
}