Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(297)

Unified Diff: tests_lit/llvm2ice_tests/vector-ops.ll

Issue 2412053002: [SubZero] Implement Fcmp, ICmp, Cast and Select for vector type (Closed) Base URL: https://chromium.googlesource.com/native_client/pnacl-subzero.git@master
Patch Set: Rebase to master Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tests_lit/llvm2ice_tests/vector-icmp.ll ('k') | tests_lit/llvm2ice_tests/vector-select.ll » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tests_lit/llvm2ice_tests/vector-ops.ll
diff --git a/tests_lit/llvm2ice_tests/vector-ops.ll b/tests_lit/llvm2ice_tests/vector-ops.ll
index 711418708921de9ecff1983a92057c1d95aaf7b0..679b565fa22d3e8b3f811c9961f0d20a078be954 100644
--- a/tests_lit/llvm2ice_tests/vector-ops.ll
+++ b/tests_lit/llvm2ice_tests/vector-ops.ll
@@ -9,6 +9,12 @@
; RUN: %p2i -i %s --filetype=obj --disassemble --args -Om1 -mattr=sse4.1 \
; RUN: | FileCheck --check-prefix=SSE41 %s
+; RUN: %if --need=target_MIPS32 --need=allow_dump \
+; RUN: --command %p2i --filetype=asm --assemble --disassemble --target mips32\
+; RUN: -i %s --args -O2 --skip-unimplemented \
+; RUN: | %if --need=target_MIPS32 --need=allow_dump \
+; RUN: --command FileCheck --check-prefix MIPS32 %s
+
; insertelement operations
define internal <4 x float> @insertelement_v4f32_0(<4 x float> %vec,
@@ -21,6 +27,24 @@ entry:
; SSE41-LABEL: insertelement_v4f32_0
; SSE41: insertps {{.*}},{{.*}},0x0
+
+; *** a0 - implicit return <4 x float>
+; *** a1 - unused due to alignment of %vec
+; *** a2:a3:sp[16]:s[20] - %vec
+; *** sp[24] - %elt
+; MIPS32-LABEL: insertelement_v4f32_0
+; *** Load element 2 and 3 of %vec
+; MIPS32: lw [[BV_E2:.*]],
+; MIPS32: lw [[BV_E3:.*]],
+; *** Load %elt
+; MIPS32: lwc1 [[ELT:.*]],
+; *** Insert %elt at %vec[0]
+; MIPS32: mfc1 [[RV_E0:.*]],[[ELT]]
+; MIPS32: move [[RET_PTR:.*]],a0
+; MIPS32: sw [[RV_E0]],0([[RET_PTR]])
+; MIPS32: sw a3,4([[RET_PTR]])
+; MIPS32: sw [[BV_E2]],8([[RET_PTR]])
+; MIPS32: sw [[BV_E3]],12([[RET_PTR]])
}
define internal <4 x i32> @insertelement_v4i32_0(<4 x i32> %vec, i32 %elt) {
@@ -33,6 +57,15 @@ entry:
; SSE41-LABEL: insertelement_v4i32_0
; SSE41: pinsrd {{.*}},{{.*}},0x0
+
+; *** a0:a1:a2:a3 - %vec
+; *** sp[16] - %elt
+; MIPS32-LABEL: insertelement_v4i32_0
+; *** Load %elt
+; MIPS32: lw v0,16(sp)
+; MIPS32: move v1,a1
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
@@ -47,6 +80,17 @@ entry:
; SSE41-LABEL: insertelement_v4f32_1
; SSE41: insertps {{.*}},{{.*}},0x10
+
+; MIPS32-LABEL: insertelement_v4f32_1
+; MIPS32: lw [[VEC_E2:.*]],16(sp)
+; MIPS32: lw [[VEC_E3:.*]],20(sp)
+; MIPS32: lwc1 [[ELT:.*]],24(sp)
+; MIPS32: mfc1 [[R_E1:.*]],[[ELT]]
+; MIPS32: move [[PTR:.*]],a0
+; MIPS32: sw a2,0([[PTR]])
+; MIPS32: sw [[R_E1]],4([[PTR]])
+; MIPS32: sw [[VEC_E2]],8([[PTR]])
+; MIPS32: sw [[VEC_E3]],12([[PTR]])
}
define internal <4 x i32> @insertelement_v4i32_1(<4 x i32> %vec, i32 %elt) {
@@ -59,6 +103,13 @@ entry:
; SSE41-LABEL: insertelement_v4i32_1
; SSE41: pinsrd {{.*}},{{.*}},0x1
+
+; MIPS32-LABEL: insertelement_v4i32_1
+; MIPS32: lw [[ELT:.*]],16(sp)
+; MIPS32: move v1,[[ELT]]
+; MIPS32: move v0,a0
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
define internal <8 x i16> @insertelement_v8i16(<8 x i16> %vec, i32 %elt.arg) {
@@ -71,6 +122,16 @@ entry:
; SSE41-LABEL: insertelement_v8i16
; SSE41: pinsrw
+
+; MIPS32-LABEL: insertelement_v8i16
+; MIPS32: lw [[ELT:.*]],16(sp)
+; MIPS32: sll [[ELT]],[[ELT]],0x10
+; MIPS32: sll a0,a0,0x10
+; MIPS32: srl a0,a0,0x10
+; MIPS32: or v0,[[ELT]],a0
+; MIPS32: move v1,a1
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
define internal <16 x i8> @insertelement_v16i8(<16 x i8> %vec, i32 %elt.arg) {
@@ -85,6 +146,18 @@ entry:
; SSE41-LABEL: insertelement_v16i8
; SSE41: pinsrb
+
+; MIPS32-LABEL: insertelement_v16i8
+; MIPS32: lw [[ELT:.*]],16(sp)
+; MIPS32: andi [[ELT]],[[ELT]],0xff
+; MIPS32: sll [[ELT]],[[ELT]],0x8
+; MIPS32: lui [[T:.*]],0xffff
+; MIPS32: ori [[T]],[[T]],0xff
+; MIPS32: and a0,a0,[[T]]
+; MIPS32: or v0,v0,a0
+; MIPS32: move v1,a1
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
define internal <4 x i1> @insertelement_v4i1_0(<4 x i1> %vec, i32 %elt.arg) {
@@ -97,6 +170,12 @@ entry:
; SSE41-LABEL: insertelement_v4i1_0
; SSE41: pinsrd {{.*}},{{.*}},0x0
+
+; MIPS32-LABEL: insertelement_v4i1_0
+; MIPS32: lw v0,16(sp)
+; MIPS32: move v1,a1
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
define internal <4 x i1> @insertelement_v4i1_1(<4 x i1> %vec, i32 %elt.arg) {
@@ -110,6 +189,13 @@ entry:
; SSE41-LABEL: insertelement_v4i1_1
; SSE41: pinsrd {{.*}},{{.*}},0x1
+
+; MIPS32-LABEL: insertelement_v4i1_1
+; MIPS32: lw [[ELT:.*]],16(sp)
+; MIPS32: move v1,[[ELT]]
+; MIPS32: move v0,a0
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
define internal <8 x i1> @insertelement_v8i1(<8 x i1> %vec, i32 %elt.arg) {
@@ -122,6 +208,16 @@ entry:
; SSE41-LABEL: insertelement_v8i1
; SSE41: pinsrw
+
+; MIPS32-LABEL: insertelement_v8i1
+; MIPS32: lw [[ELT:.*]],16(sp)
+; MIPS32: sll [[ELT]],[[ELT]],0x10
+; MIPS32: sll a0,a0,0x10
+; MIPS32: srl a0,a0,0x10
+; MIPS32: or v0,[[ELT]],a0
+; MIPS32: move v1,a1
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
define internal <16 x i1> @insertelement_v16i1(<16 x i1> %vec, i32 %elt.arg) {
@@ -136,6 +232,18 @@ entry:
; SSE41-LABEL: insertelement_v16i1
; SSE41: pinsrb
+
+; MIPS32-LABEL: insertelement_v16i1
+; MIPS32: lw [[ELT:.*]],16(sp)
+; MIPS32: andi [[ELT]],[[ELT]],0xff
+; MIPS32: sll [[ELT]],[[ELT]],0x8
+; MIPS32: lui [[T:.*]],0xffff
+; MIPS32: ori [[T]],[[T]],0xff
+; MIPS32: and a0,a0,[[T]]
+; MIPS32: or v0,[[ELT]],a0
+; MIPS32: move v1,a1
+; MIPS32: move a0,a2
+; MIPS32: move a1,a3
}
; extractelement operations
@@ -149,6 +257,9 @@ entry:
; SSE41-LABEL: extractelement_v4f32
; SSE41: pshufd
+
+; MIPS32-LABEL: extractelement_v4f32
+; MIPS32: mtc1 a1,$f0
}
define internal i32 @extractelement_v4i32(<4 x i32> %vec) {
@@ -161,6 +272,9 @@ entry:
; SSE41-LABEL: extractelement_v4i32
; SSE41: pextrd
+
+; MIPS32-LABEL: extractelement_v4i32
+; MIPS32L move v0,a1
}
define internal i32 @extractelement_v8i16(<8 x i16> %vec) {
@@ -173,6 +287,11 @@ entry:
; SSE41-LABEL: extractelement_v8i16
; SSE41: pextrw
+
+; MIPS32-LABEL: extractelement_v8i16
+; MIPS32: srl a0,a0,0x10
+; MIPS32: andi a0,a0,0xffff
+; MIPS32: move v0,a0
}
define internal i32 @extractelement_v16i8(<16 x i8> %vec) {
@@ -187,6 +306,12 @@ entry:
; SSE41-LABEL: extractelement_v16i8
; SSE41: pextrb
+
+; MIPS32-LABEL: extractelement_v16i8
+; MIPS32: srl a0,a0,0x8
+; MIPS32: andi a0,a0,0xff
+; MIPS32: andi a0,a0,0xff
+; MIPS32: move v0,a0
}
define internal i32 @extractelement_v4i1(<4 x i1> %vec) {
@@ -199,6 +324,11 @@ entry:
; SSE41-LABEL: extractelement_v4i1
; SSE41: pextrd
+
+; MIPS32-LABEL: extractelement_v4i1
+; MIPS32: andi a1,a1,0x1
+; MIPS32: andi a1,a1,0x1
+; MIPS32: move v0,a1
}
define internal i32 @extractelement_v8i1(<8 x i1> %vec) {
@@ -211,6 +341,12 @@ entry:
; SSE41-LABEL: extractelement_v8i1
; SSE41: pextrw
+
+; MIPS32-LABEL: extractelement_v8i1
+; MIPS32: srl a0,a0,0x10
+; MIPS32: andi a0,a0,0x1
+; MIPS32: andi a0,a0,0x1
+; MIPS32: move v0,a0
}
define internal i32 @extractelement_v16i1(<16 x i1> %vec) {
@@ -225,4 +361,11 @@ entry:
; SSE41-LABEL: extractelement_v16i1
; SSE41: pextrb
+
+; MIPS32-LABEL: extractelement_v16i1
+; MIPS32: srl a0,a0,0x8
+; MIPS32: andi a0,a0,0xff
+; MIPS32: andi a0,a0,0x1
+; MIPS32: andi a0,a0,0x1
+; MIPS32: move v0,a0
}
« no previous file with comments | « tests_lit/llvm2ice_tests/vector-icmp.ll ('k') | tests_lit/llvm2ice_tests/vector-select.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698