aboutsummaryrefslogtreecommitdiff
path: root/test/CodeGen/Mips/msa/basic_operations.ll
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/Mips/msa/basic_operations.ll')
-rw-r--r--test/CodeGen/Mips/msa/basic_operations.ll59
1 files changed, 45 insertions, 14 deletions
diff --git a/test/CodeGen/Mips/msa/basic_operations.ll b/test/CodeGen/Mips/msa/basic_operations.ll
index d7a05800a273..c14221937f4d 100644
--- a/test/CodeGen/Mips/msa/basic_operations.ll
+++ b/test/CodeGen/Mips/msa/basic_operations.ll
@@ -1,9 +1,9 @@
; RUN: llc -march=mips -mattr=+msa,+fp64 -relocation-model=pic \
; RUN: -verify-machineinstrs < %s | \
-; RUN: FileCheck -check-prefixes=ALL,O32,MIPS32,ALL-BE %s
+; RUN: FileCheck -check-prefixes=ALL,O32,MIPS32,ALL-BE,O32-BE %s
; RUN: llc -march=mipsel -mattr=+msa,+fp64 -relocation-model=pic \
; RUN: -verify-machineinstrs < %s | \
-; RUN: FileCheck -check-prefixes=ALL,O32,MIPS32,ALL-LE %s
+; RUN: FileCheck -check-prefixes=ALL,O32,MIPS32,ALL-LE,O32-LE %s
; RUN: llc -march=mips64 -target-abi n32 -mattr=+msa,+fp64 \
; RUN: -relocation-model=pic -verify-machineinstrs < %s | \
; RUN: FileCheck -check-prefixes=ALL,N32,MIPS64,ALL-BE %s
@@ -58,10 +58,19 @@ define void @const_v16i8() nounwind {
; ALL-DAG: fill.w [[R1:\$w[0-9]+]], [[R2]]
store volatile <16 x i8> <i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8, i8 1, i8 2, i8 3, i8 4, i8 5, i8 6, i8 7, i8 8>, <16 x i8>*@v16i8
- ; O32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %lo($
- ; N32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %got_ofst(.L
- ; N64: daddiu [[G_PTR:\$[0-9]+]], {{.*}}, %got_ofst(.L
- ; ALL: ld.b [[R1:\$w[0-9]+]], 0([[G_PTR]])
+ ; ALL-BE-DAG: lui [[R3:\$[0-9]+]], 1286
+ ; ALL-LE-DAG: lui [[R3:\$[0-9]+]], 2055
+ ; ALL-BE-DAG: ori [[R4:\$[0-9]+]], [[R3]], 1800
+ ; ALL-LE-DAG: ori [[R4:\$[0-9]+]], [[R3]], 1541
+ ; O32-BE: fill.w [[R1:\$w[0-9]+]], [[R4]]
+
+ ; O32: insert.w [[R1]][1], [[R2]]
+ ; O32: splati.d $w{{.*}}, [[R1]][0]
+
+ ; MIPS64-BE: dinsu [[R4]], [[R2]], 32, 32
+ ; MIPS64-LE: dinsu [[R2]], [[R4]], 32, 32
+ ; MIPS64-BE: fill.d $w{{.*}}, [[R4]]
+ ; MIPS64-LE: fill.d $w{{.*}}, [[R2]]
ret void
}
@@ -92,10 +101,19 @@ define void @const_v8i16() nounwind {
; ALL-DAG: fill.w [[R1:\$w[0-9]+]], [[R2]]
store volatile <8 x i16> <i16 1, i16 2, i16 3, i16 4, i16 1, i16 2, i16 3, i16 4>, <8 x i16>*@v8i16
- ; O32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %lo($
- ; N32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %got_ofst(.L
- ; N64: daddiu [[G_PTR:\$[0-9]+]], {{.*}}, %got_ofst(.L
- ; ALL: ld.h [[R1:\$w[0-9]+]], 0([[G_PTR]])
+ ; ALL-BE-DAG: lui [[R3:\$[0-9]+]], 3
+ ; ALL-LE-DAG: lui [[R3:\$[0-9]+]], 4
+ ; ALL-BE-DAG: ori [[R4:\$[0-9]+]], [[R3]], 4
+ ; ALL-LE-DAG: ori [[R4:\$[0-9]+]], [[R3]], 3
+
+ ; O32-BE: fill.w [[R1:\$w[0-9]+]], [[R4]]
+ ; O32: insert.w [[R1]][1], [[R2]]
+ ; O32: splati.d $w{{.*}}, [[R1]][0]
+
+ ; MIPS64-BE: dinsu [[R4]], [[R2]], 32, 32
+ ; MIPS64-LE: dinsu [[R2]], [[R4]], 32, 32
+ ; MIPS64-BE: fill.d $w{{.*}}, [[R4]]
+ ; MIPS64-LE: fill.d $w{{.*}}, [[R2]]
ret void
}
@@ -122,10 +140,23 @@ define void @const_v4i32() nounwind {
; ALL: ldi.h [[R1:\$w[0-9]+]], 1
store volatile <4 x i32> <i32 1, i32 2, i32 1, i32 2>, <4 x i32>*@v4i32
- ; O32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %lo($
- ; N32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %got_ofst(.L
- ; N64: daddiu [[G_PTR:\$[0-9]+]], {{.*}}, %got_ofst(.L
- ; ALL: ld.w [[R1:\$w[0-9]+]], 0([[G_PTR]])
+ ; -BE-DAG: ori [[R2:\$[0-9]+]], $zero, 1
+ ; O32-BE-DAG: ori [[R3:\$[0-9]+]], $zero, 1
+ ; O32-BE-DAG: ori [[R4:\$[0-9]+]], $zero, 2
+ ; O32-LE-DAG: ori [[R3:\$[0-9]+]], $zero, 2
+ ; O32-LE-DAG: ori [[R4:\$[0-9]+]], $zero, 1
+ ; O32: fill.w [[W0:\$w[0-9]+]], [[R4]]
+ ; O32: insert.w [[W0]][1], [[R3]]
+ ; O32: splati.d [[W1:\$w[0-9]+]], [[W0]]
+
+ ; MIPS64-DAG: ori [[R5:\$[0-9]+]], $zero, 2
+ ; MIPS64-DAG: ori [[R6:\$[0-9]+]], $zero, 1
+
+ ; MIPS64-BE: dinsu [[R5]], [[R6]], 32, 32
+ ; MIPS64-LE: dinsu [[R6]], [[R5]], 32, 32
+ ; MIPS64-BE: fill.d $w{{.*}}, [[R4]]
+ ; MIPS64-LE: fill.d $w{{.*}}, [[R2]]
+
store volatile <4 x i32> <i32 3, i32 4, i32 5, i32 6>, <4 x i32>*@v4i32
; O32: addiu [[G_PTR:\$[0-9]+]], {{.*}}, %lo($