| 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 f195b1e9897292f804047c13654f16bdf20dbee5..55f6832227f5de01561109e487ec24e8d01614e7 100644
|
| --- a/tests_lit/llvm2ice_tests/64bit.pnacl.ll
|
| +++ b/tests_lit/llvm2ice_tests/64bit.pnacl.ll
|
| @@ -120,6 +120,27 @@ entry:
|
| ; ARM32: bl {{.*}} ignore64BitArgNoInline
|
|
|
| ; MIPS32-LABEL: pass64BitArg
|
| +; MIPS32-O2: sw a3,{{.*}}(sp)
|
| +; MIPS32-O2: sw a2,{{.*}}(sp)
|
| +; MIPS32-O2: li a2,123
|
| +; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
|
| +; MIPS32-O2: nop
|
| +; MIPS32-O2: move s0,v0
|
| +; MIPS32-O2: sw s3,{{.*}}(sp)
|
| +; MIPS32-O2: sw s2,{{.*}}(sp)
|
| +; MIPS32-O2: lw a0,{{.*}}(sp)
|
| +; MIPS32-O2: move a1,s1
|
| +; MIPS32-O2: li a2,123
|
| +; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
|
| +; MIPS32-O2: nop
|
| +; MIPS32-O2: move s1,v0
|
| +; MIPS32-O2: sw s7,{{.*}}(sp)
|
| +; MIPS32-O2: sw s6,{{.*}}(sp)
|
| +; MIPS32-O2: move a0,s4
|
| +; MIPS32-O2: move a1,s5
|
| +; MIPS32-O2: li a2,123
|
| +; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
|
| +; MIPS32-O2: nop
|
|
|
|
|
| declare i32 @ignore64BitArgNoInline(i64, i32, i64)
|
| @@ -164,6 +185,18 @@ entry:
|
| ; ARM32: mov r2, #123
|
| ; ARM32: bl {{.*}} ignore64BitArgNoInline
|
|
|
| +; MIPS32-LABEL: pass64BitConstArg
|
| +; MIPS32-O2: lui [[REG:.*]],0xdead
|
| +; MIPS32-O2: ori [[REG1:.*]],[[REG]],0xbeef
|
| +; MIPS32-O2: lui [[REG:.*]],0x1234
|
| +; MIPS32-O2: ori [[REG2:.*]],[[REG]],0x5678
|
| +; MIPS32-O2: sw [[REG1]],{{.*}}(sp)
|
| +; MIPS32-O2: sw [[REG2]],{{.*}}(sp)
|
| +; MIPS32-O2: move a0,a2
|
| +; MIPS32-O2: move a1,a3
|
| +; MIPS32-O2: li a2,123
|
| +; MIPS32-O2: jal {{.*}} ignore64BitArgNoInline
|
| +
|
| define internal i32 @pass64BitUndefArg() {
|
| entry:
|
| %call = call i32 @ignore64BitArgNoInline(i64 0, i32 123, i64 undef)
|
| @@ -566,6 +599,11 @@ entry:
|
| ; ARM32-LABEL: shl64BitSignedTrunc
|
| ; ARM32: lsl r
|
|
|
| +; MIPS32-LABEL: shl64BitSignedTrunc
|
| +; MIPS32-O2: sllv
|
| +; MIPS32-O2: andi {{.*}},0x20
|
| +; MIPS32-O2: movn
|
| +
|
| define internal i64 @shl64BitUnsigned(i64 %a, i64 %b) {
|
| entry:
|
| %shl = shl i64 %a, %b
|
| @@ -675,6 +713,16 @@ entry:
|
| ; ARM32: cmp
|
| ; ARM32: asrge
|
|
|
| +; MIPS32-LABEL: shr64BitSignedTrunc
|
| +; MIPS32-O2: srlv
|
| +; MIPS32-O2: nor
|
| +; MIPS32-O2: sll
|
| +; MIPS32-O2: sllv
|
| +; MIPS32-O2: or
|
| +; MIPS32-O2: srav
|
| +; MIPS32-O2: andi {{.*}},0x20
|
| +; MIPS32-O2: movn
|
| +
|
| define internal i64 @shr64BitUnsigned(i64 %a, i64 %b) {
|
| entry:
|
| %shr = lshr i64 %a, %b
|
| @@ -739,6 +787,16 @@ entry:
|
| ; ARM32: cmp
|
| ; ARM32: lsrge
|
|
|
| +; MIPS32-LABEL: shr64BitUnsignedTrunc
|
| +; MIPS32-O2: srlv
|
| +; MIPS32-O2: nor
|
| +; MIPS32-O2: sll
|
| +; MIPS32-O2: sllv
|
| +; MIPS32-O2: or
|
| +; MIPS32-O2: srlv
|
| +; MIPS32-O2: andi
|
| +; MIPS32-O2: movn
|
| +
|
| define internal i64 @and64BitSigned(i64 %a, i64 %b) {
|
| entry:
|
| %and = and i64 %b, %a
|
| @@ -2173,6 +2231,10 @@ entry:
|
| ; ARM32: ldr r{{.*}}, [r[[REG:.*]]]
|
| ; ARM32: ldr r{{.*}}, [r[[REG]], #4]
|
|
|
| +; MIPS32-LABEL: load64
|
| +; MIPS32-O2: lw {{.*}},0([[REG:.*]])
|
| +; MIPS32-O2: lw [[REG]],4([[REG]])
|
| +
|
| define internal void @store64(i32 %a, i64 %value) {
|
| entry:
|
| %__2 = inttoptr i32 %a to i64*
|
| @@ -2192,6 +2254,10 @@ entry:
|
| ; ARM32: str r{{.*}}, [r[[REG:.*]], #4]
|
| ; ARM32: str r{{.*}}, [r[[REG]]]
|
|
|
| +; MIPS32-LABEL: store64
|
| +; MIPS32-O2: sw {{.*}},4([[REG:.*]])
|
| +; MIPS32-O2: sw {{.*}},0([[REG]])
|
| +
|
| define internal void @store64Const(i32 %a) {
|
| entry:
|
| %__1 = inttoptr i32 %a to i64*
|
| @@ -2215,6 +2281,14 @@ entry:
|
| ; ARM32: str [[REG1]], [r[[REG:.*]], #4]
|
| ; ARM32: str [[REG2]], [r[[REG]]]
|
|
|
| +; MIPS32-LABEL: store64Const
|
| +; MIPS32-O2: lui [[REG1:.*]],0xdead
|
| +; MIPS32-O2: ori [[REG1:.*]],[[REG1]],0xbeef
|
| +; MIPS32-O2: lui [[REG2:.*]],0x1234
|
| +; MIPS32-O2: ori [[REG2:.*]],[[REG2]],0x5678
|
| +; MIPS32-O2: sw [[REG1]],4([[REG:.*]])
|
| +; MIPS32-O2: sw [[REG2]],0([[REG]])
|
| +
|
| define internal i64 @select64VarVar(i64 %a, i64 %b) {
|
| entry:
|
| %cmp = icmp ult i64 %a, %b
|
|
|