| Index: tests_lit/llvm2ice_tests/64bit.pnacl.ll
|
| diff --git a/tests_lit/llvm2ice_tests/64bit.pnacl.ll b/tests_lit/llvm2ice_tests/64bit.pnacl.ll
|
| index cc32a87c437638886651aa9a2d84c3f8a8598119..f6c30fa21990db3a2d898f8fb1872ef32294feec 100644
|
| --- a/tests_lit/llvm2ice_tests/64bit.pnacl.ll
|
| +++ b/tests_lit/llvm2ice_tests/64bit.pnacl.ll
|
| @@ -91,13 +91,11 @@ entry:
|
|
|
| ; ARM32-LABEL: pass64BitArg
|
| ; ARM32: sub sp, {{.*}} #16
|
| -; ARM32: str {{.*}}, [sp, #4]
|
| ; ARM32: str {{.*}}, [sp]
|
| ; ARM32: movw r2, #123
|
| ; ARM32: bl {{.*}} ignore64BitArgNoInline
|
| ; ARM32: add sp, {{.*}} #16
|
| ; ARM32: sub sp, {{.*}} #16
|
| -; ARM32: str {{.*}}, [sp, #4]
|
| ; ARM32: str {{.*}}, [sp]
|
| ; ARM32: {{mov|ldr}} r0
|
| ; ARM32: {{mov|ldr}} r1
|
| @@ -105,7 +103,6 @@ entry:
|
| ; ARM32: bl {{.*}} ignore64BitArgNoInline
|
| ; ARM32: add sp, {{.*}} #16
|
| ; ARM32: sub sp, {{.*}} #16
|
| -; ARM32: str {{.*}}, [sp, #4]
|
| ; ARM32: str {{.*}}, [sp]
|
| ; ARM32: {{mov|ldr}} r0
|
| ; ARM32: {{mov|ldr}} r1
|
| @@ -147,9 +144,9 @@ entry:
|
| ; ARM32-LABEL: pass64BitConstArg
|
| ; ARM32: sub sp, {{.*}} #16
|
| ; ARM32: movw [[REG1:r.*]], {{.*}} ; 0xbeef
|
| -; ARM32: movt [[REG1:r.*]], {{.*}} ; 0xdead
|
| +; ARM32: movt [[REG1]], {{.*}} ; 0xdead
|
| ; ARM32: movw [[REG2:r.*]], {{.*}} ; 0x5678
|
| -; ARM32: movt [[REG2:r.*]], {{.*}} ; 0x1234
|
| +; ARM32: movt [[REG2]], {{.*}} ; 0x1234
|
| ; ARM32: str [[REG1]], [sp, #4]
|
| ; ARM32: str [[REG2]], [sp]
|
| ; ARM32: {{mov|ldr}} r0
|
| @@ -438,12 +435,13 @@ entry:
|
| ; OPTM1: je
|
|
|
| ; ARM32-LABEL: shl64BitSigned
|
| -; ARM32: sub [[REG3:r.*]], [[REG2:r.*]], #32
|
| -; ARM32: lsl [[REG1:r.*]], {{r.*}}, [[REG2]]
|
| -; ARM32: orr [[REG1]], [[REG1]], [[REG0:r.*]], lsl [[REG3]]
|
| -; ARM32: rsb [[REG4:r.*]], [[REG2]], #32
|
| -; ARM32: orr [[REG1]], [[REG1]], [[REG0]], lsr [[REG4]]
|
| -; ARM32: lsl {{.*}}, [[REG0]], [[REG2]]
|
| +; ARM32: rsb [[T0:r[0-9]+]], r2, #32
|
| +; ARM32: lsr [[T1:r[0-9]+]], r0, [[T0]]
|
| +; ARM32: orr [[T2:r[0-9]+]], [[T1]], r1, lsl r2
|
| +; ARM32: sub [[T3:r[0-9]+]], r2, #32
|
| +; ARM32: cmp [[T3]], #0
|
| +; ARM32: lslge [[T2]], r0, [[T3]]
|
| +; ARM32: lsl r{{[0-9]+}}, r0, r2
|
|
|
| define internal i32 @shl64BitSignedTrunc(i64 %a, i64 %b) {
|
| entry:
|
| @@ -484,11 +482,12 @@ entry:
|
| ; OPTM1: je
|
|
|
| ; ARM32-LABEL: shl64BitUnsigned
|
| -; ARM32: sub
|
| -; ARM32: lsl
|
| -; ARM32: orr
|
| ; ARM32: rsb
|
| +; ARM32: lsr
|
| ; ARM32: orr
|
| +; ARM32: sub
|
| +; ARM32: cmp
|
| +; ARM32: lslge
|
| ; ARM32: lsl
|
|
|
| define internal i64 @shr64BitSigned(i64 %a, i64 %b) {
|
| @@ -511,12 +510,13 @@ entry:
|
| ; OPTM1: sar {{.*}},0x1f
|
|
|
| ; ARM32-LABEL: shr64BitSigned
|
| -; ARM32: rsb
|
| -; ARM32: lsr
|
| -; ARM32: orr
|
| -; ARM32: subs
|
| -; ARM32: orrpl
|
| -; ARM32: asr
|
| +; ARM32: lsr [[T0:r[0-9]+]], r0, r2
|
| +; ARM32: rsb [[T1:r[0-9]+]], r2, #32
|
| +; ARM32: orr r0, [[T0]], r1, lsl [[T1]]
|
| +; ARM32: sub [[T2:r[0-9]+]], r2, #32
|
| +; ARM32: cmp [[T2]], #0
|
| +; ARM32: asrge r0, r1, [[T2]]
|
| +; ARM32: asr r{{[0-9]+}}, r1, r2
|
|
|
| define internal i32 @shr64BitSignedTrunc(i64 %a, i64 %b) {
|
| entry:
|
| @@ -538,11 +538,12 @@ entry:
|
| ; OPTM1: sar {{.*}},0x1f
|
|
|
| ; ARM32-LABEL: shr64BitSignedTrunc
|
| -; ARM32: rsb
|
| ; ARM32: lsr
|
| +; ARM32: rsb
|
| ; ARM32: orr
|
| -; ARM32: subs
|
| -; ARM32: orrpl
|
| +; ARM32: sub
|
| +; ARM32: cmp
|
| +; ARM32: asrge
|
|
|
| define internal i64 @shr64BitUnsigned(i64 %a, i64 %b) {
|
| entry:
|
| @@ -562,11 +563,12 @@ entry:
|
| ; OPTM1: je
|
|
|
| ; ARM32-LABEL: shr64BitUnsigned
|
| -; ARM32: rsb
|
| ; ARM32: lsr
|
| +; ARM32: rsb
|
| ; ARM32: orr
|
| ; ARM32: sub
|
| -; ARM32: orr
|
| +; ARM32: cmp
|
| +; ARM32: lsrge
|
| ; ARM32: lsr
|
|
|
| define internal i32 @shr64BitUnsignedTrunc(i64 %a, i64 %b) {
|
| @@ -588,11 +590,12 @@ entry:
|
| ; OPTM1: je
|
|
|
| ; ARM32-LABEL: shr64BitUnsignedTrunc
|
| -; ARM32: rsb
|
| ; ARM32: lsr
|
| +; ARM32: rsb
|
| ; ARM32: orr
|
| ; ARM32: sub
|
| -; ARM32: orr
|
| +; ARM32: cmp
|
| +; ARM32: lsrge
|
|
|
| define internal i64 @and64BitSigned(i64 %a, i64 %b) {
|
| entry:
|
|
|