diff options
author | Matheus Almeida <matheus.almeida@imgtec.com> | 2013-10-21 12:43:54 +0000 |
---|---|---|
committer | Matheus Almeida <matheus.almeida@imgtec.com> | 2013-10-21 12:43:54 +0000 |
commit | f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c (patch) | |
tree | 7a4c266da3ef203f6675b76147a51194c080ba43 | |
parent | 006cff8d7b60ddf632f8642f01693dace7827d8b (diff) | |
download | llvm-f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c.tar.gz llvm-f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c.tar.bz2 llvm-f6d4cff9b1cf1e3b57592d6a0e40f0026813aa7c.tar.xz |
[mips][msa] Direct Object Emission support for MOVE.v.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@193080 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Target/Mips/MipsMSAInstrFormats.td | 5 | ||||
-rw-r--r-- | lib/Target/Mips/MipsMSAInstrInfo.td | 4 | ||||
-rw-r--r-- | test/MC/Mips/msa/test_elm.s | 3 |
3 files changed, 10 insertions, 2 deletions
diff --git a/lib/Target/Mips/MipsMSAInstrFormats.td b/lib/Target/Mips/MipsMSAInstrFormats.td index 8fe4dbca56..6e5a5eaf31 100644 --- a/lib/Target/Mips/MipsMSAInstrFormats.td +++ b/lib/Target/Mips/MipsMSAInstrFormats.td @@ -146,7 +146,12 @@ class MSA_3R_INDEX_FMT<bits<3> major, bits<2> df, bits<6> minor>: MSAInst { } class MSA_ELM_FMT<bits<10> major, bits<6> minor>: MSAInst { + bits<5> ws; + bits<5> wd; + let Inst{25-16} = major; + let Inst{15-11} = ws; + let Inst{10-6} = wd; let Inst{5-0} = minor; } diff --git a/lib/Target/Mips/MipsMSAInstrInfo.td b/lib/Target/Mips/MipsMSAInstrInfo.td index 09c06bcd8a..b4d05f7438 100644 --- a/lib/Target/Mips/MipsMSAInstrInfo.td +++ b/lib/Target/Mips/MipsMSAInstrInfo.td @@ -2158,8 +2158,8 @@ class MOD_U_W_DESC : MSA_3R_DESC_BASE<"mod_u.w", urem, MSA128WOpnd>; class MOD_U_D_DESC : MSA_3R_DESC_BASE<"mod_u.d", urem, MSA128DOpnd>; class MOVE_V_DESC { - dag OutOperandList = (outs MSA128B:$wd); - dag InOperandList = (ins MSA128B:$ws); + dag OutOperandList = (outs MSA128BOpnd:$wd); + dag InOperandList = (ins MSA128BOpnd:$ws); string AsmString = "move.v\t$wd, $ws"; list<dag> Pattern = []; InstrItinClass Itinerary = NoItinerary; diff --git a/test/MC/Mips/msa/test_elm.s b/test/MC/Mips/msa/test_elm.s index 6b46707730..1d0483826a 100644 --- a/test/MC/Mips/msa/test_elm.s +++ b/test/MC/Mips/msa/test_elm.s @@ -16,6 +16,7 @@ # CHECK: splati.h $w24, $w28[1] # encoding: [0x78,0x61,0xe6,0x19] # CHECK: splati.w $w13, $w18[0] # encoding: [0x78,0x70,0x93,0x59] # CHECK: splati.d $w28, $w1[0] # encoding: [0x78,0x78,0x0f,0x19] +# CHECK: move.v $w23, $w24 # encoding: [0x78,0xbe,0xc5,0xd9] # CHECKOBJDUMP: copy_s.b $13, $w8[2] # CHECKOBJDUMP: copy_s.h $1, $w25[0] @@ -31,6 +32,7 @@ # CHECKOBJDUMP: splati.h $w24, $w28[1] # CHECKOBJDUMP: splati.w $w13, $w18[0] # CHECKOBJDUMP: splati.d $w28, $w1[0] +# CHECKOBJDUMP: move.v $w23, $w24 copy_s.b $13, $w8[2] copy_s.h $1, $w25[0] @@ -46,3 +48,4 @@ splati.h $w24, $w28[1] splati.w $w13, $w18[0] splati.d $w28, $w1[0] + move.v $w23, $w24 |