diff --git a/llvm/test/MC/LoongArch/lsx/absd.s b/llvm/test/MC/LoongArch/lsx/absd.s new file mode 100644 index 0000000000000..b203cab285743 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/absd.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vabsd.b $vr14, $vr15, $vr12 +# CHECK-INST: vabsd.b $vr14, $vr15, $vr12 +# CHECK-ENCODING: encoding: [0xee,0x31,0x60,0x70] + +vabsd.h $vr7, $vr13, $vr10 +# CHECK-INST: vabsd.h $vr7, $vr13, $vr10 +# CHECK-ENCODING: encoding: [0xa7,0xa9,0x60,0x70] + +vabsd.w $vr5, $vr28, $vr29 +# CHECK-INST: vabsd.w $vr5, $vr28, $vr29 +# CHECK-ENCODING: encoding: [0x85,0x77,0x61,0x70] + +vabsd.d $vr7, $vr25, $vr5 +# CHECK-INST: vabsd.d $vr7, $vr25, $vr5 +# CHECK-ENCODING: encoding: [0x27,0x97,0x61,0x70] + +vabsd.bu $vr22, $vr16, $vr21 +# CHECK-INST: vabsd.bu $vr22, $vr16, $vr21 +# CHECK-ENCODING: encoding: [0x16,0x56,0x62,0x70] + +vabsd.hu $vr7, $vr29, $vr8 +# CHECK-INST: vabsd.hu $vr7, $vr29, $vr8 +# CHECK-ENCODING: encoding: [0xa7,0xa3,0x62,0x70] + +vabsd.wu $vr19, $vr31, $vr16 +# CHECK-INST: vabsd.wu $vr19, $vr31, $vr16 +# CHECK-ENCODING: encoding: [0xf3,0x43,0x63,0x70] + +vabsd.du $vr29, $vr31, $vr17 +# CHECK-INST: vabsd.du $vr29, $vr31, $vr17 +# CHECK-ENCODING: encoding: [0xfd,0xc7,0x63,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/add.s b/llvm/test/MC/LoongArch/lsx/add.s new file mode 100644 index 0000000000000..fbc6c0fd5dd7f --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/add.s @@ -0,0 +1,24 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vadd.b $vr11, $vr12, $vr8 +# CHECK-INST: vadd.b $vr11, $vr12, $vr8 +# CHECK-ENCODING: encoding: [0x8b,0x21,0x0a,0x70] + +vadd.h $vr22, $vr3, $vr4 +# CHECK-INST: vadd.h $vr22, $vr3, $vr4 +# CHECK-ENCODING: encoding: [0x76,0x90,0x0a,0x70] + +vadd.w $vr13, $vr16, $vr6 +# CHECK-INST: vadd.w $vr13, $vr16, $vr6 +# CHECK-ENCODING: encoding: [0x0d,0x1a,0x0b,0x70] + +vadd.d $vr12, $vr9, $vr3 +# CHECK-INST: vadd.d $vr12, $vr9, $vr3 +# CHECK-ENCODING: encoding: [0x2c,0x8d,0x0b,0x70] + +vadd.q $vr16, $vr15, $vr10 +# CHECK-INST: vadd.q $vr16, $vr15, $vr10 +# CHECK-ENCODING: encoding: [0xf0,0x29,0x2d,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/adda.s b/llvm/test/MC/LoongArch/lsx/adda.s new file mode 100644 index 0000000000000..31f073b055ece --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/adda.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vadda.b $vr7, $vr14, $vr21 +# CHECK-INST: vadda.b $vr7, $vr14, $vr21 +# CHECK-ENCODING: encoding: [0xc7,0x55,0x5c,0x70] + +vadda.h $vr19, $vr29, $vr2 +# CHECK-INST: vadda.h $vr19, $vr29, $vr2 +# CHECK-ENCODING: encoding: [0xb3,0x8b,0x5c,0x70] + +vadda.w $vr2, $vr23, $vr17 +# CHECK-INST: vadda.w $vr2, $vr23, $vr17 +# CHECK-ENCODING: encoding: [0xe2,0x46,0x5d,0x70] + +vadda.d $vr13, $vr18, $vr24 +# CHECK-INST: vadda.d $vr13, $vr18, $vr24 +# CHECK-ENCODING: encoding: [0x4d,0xe2,0x5d,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/addi.s b/llvm/test/MC/LoongArch/lsx/addi.s new file mode 100644 index 0000000000000..0e5795050d4ea --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/addi.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vaddi.bu $vr14, $vr3, 2 +# CHECK-INST: vaddi.bu $vr14, $vr3, 2 +# CHECK-ENCODING: encoding: [0x6e,0x08,0x8a,0x72] + +vaddi.hu $vr30, $vr27, 21 +# CHECK-INST: vaddi.hu $vr30, $vr27, 21 +# CHECK-ENCODING: encoding: [0x7e,0xd7,0x8a,0x72] + +vaddi.wu $vr16, $vr28, 27 +# CHECK-INST: vaddi.wu $vr16, $vr28, 27 +# CHECK-ENCODING: encoding: [0x90,0x6f,0x8b,0x72] + +vaddi.du $vr15, $vr8, 24 +# CHECK-INST: vaddi.du $vr15, $vr8, 24 +# CHECK-ENCODING: encoding: [0x0f,0xe1,0x8b,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/addw.s b/llvm/test/MC/LoongArch/lsx/addw.s new file mode 100644 index 0000000000000..fbcc898da803d --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/addw.s @@ -0,0 +1,100 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vaddwev.h.b $vr2, $vr23, $vr25 +# CHECK-INST: vaddwev.h.b $vr2, $vr23, $vr25 +# CHECK-ENCODING: encoding: [0xe2,0x66,0x1e,0x70] + +vaddwev.w.h $vr4, $vr8, $vr30 +# CHECK-INST: vaddwev.w.h $vr4, $vr8, $vr30 +# CHECK-ENCODING: encoding: [0x04,0xf9,0x1e,0x70] + +vaddwev.d.w $vr8, $vr31, $vr5 +# CHECK-INST: vaddwev.d.w $vr8, $vr31, $vr5 +# CHECK-ENCODING: encoding: [0xe8,0x17,0x1f,0x70] + +vaddwev.q.d $vr10, $vr10, $vr13 +# CHECK-INST: vaddwev.q.d $vr10, $vr10, $vr13 +# CHECK-ENCODING: encoding: [0x4a,0xb5,0x1f,0x70] + +vaddwev.h.bu $vr12, $vr24, $vr25 +# CHECK-INST: vaddwev.h.bu $vr12, $vr24, $vr25 +# CHECK-ENCODING: encoding: [0x0c,0x67,0x2e,0x70] + +vaddwev.w.hu $vr3, $vr9, $vr30 +# CHECK-INST: vaddwev.w.hu $vr3, $vr9, $vr30 +# CHECK-ENCODING: encoding: [0x23,0xf9,0x2e,0x70] + +vaddwev.d.wu $vr27, $vr10, $vr17 +# CHECK-INST: vaddwev.d.wu $vr27, $vr10, $vr17 +# CHECK-ENCODING: encoding: [0x5b,0x45,0x2f,0x70] + +vaddwev.q.du $vr25, $vr20, $vr14 +# CHECK-INST: vaddwev.q.du $vr25, $vr20, $vr14 +# CHECK-ENCODING: encoding: [0x99,0xba,0x2f,0x70] + +vaddwev.h.bu.b $vr5, $vr7, $vr16 +# CHECK-INST: vaddwev.h.bu.b $vr5, $vr7, $vr16 +# CHECK-ENCODING: encoding: [0xe5,0x40,0x3e,0x70] + +vaddwev.w.hu.h $vr15, $vr13, $vr29 +# CHECK-INST: vaddwev.w.hu.h $vr15, $vr13, $vr29 +# CHECK-ENCODING: encoding: [0xaf,0xf5,0x3e,0x70] + +vaddwev.d.wu.w $vr2, $vr6, $vr8 +# CHECK-INST: vaddwev.d.wu.w $vr2, $vr6, $vr8 +# CHECK-ENCODING: encoding: [0xc2,0x20,0x3f,0x70] + +vaddwev.q.du.d $vr19, $vr1, $vr12 +# CHECK-INST: vaddwev.q.du.d $vr19, $vr1, $vr12 +# CHECK-ENCODING: encoding: [0x33,0xb0,0x3f,0x70] + +vaddwod.h.b $vr31, $vr6, $vr9 +# CHECK-INST: vaddwod.h.b $vr31, $vr6, $vr9 +# CHECK-ENCODING: encoding: [0xdf,0x24,0x22,0x70] + +vaddwod.w.h $vr17, $vr31, $vr2 +# CHECK-INST: vaddwod.w.h $vr17, $vr31, $vr2 +# CHECK-ENCODING: encoding: [0xf1,0x8b,0x22,0x70] + +vaddwod.d.w $vr11, $vr15, $vr27 +# CHECK-INST: vaddwod.d.w $vr11, $vr15, $vr27 +# CHECK-ENCODING: encoding: [0xeb,0x6d,0x23,0x70] + +vaddwod.q.d $vr0, $vr26, $vr17 +# CHECK-INST: vaddwod.q.d $vr0, $vr26, $vr17 +# CHECK-ENCODING: encoding: [0x40,0xc7,0x23,0x70] + +vaddwod.h.bu $vr30, $vr15, $vr10 +# CHECK-INST: vaddwod.h.bu $vr30, $vr15, $vr10 +# CHECK-ENCODING: encoding: [0xfe,0x29,0x32,0x70] + +vaddwod.w.hu $vr24, $vr22, $vr1 +# CHECK-INST: vaddwod.w.hu $vr24, $vr22, $vr1 +# CHECK-ENCODING: encoding: [0xd8,0x86,0x32,0x70] + +vaddwod.d.wu $vr10, $vr25, $vr13 +# CHECK-INST: vaddwod.d.wu $vr10, $vr25, $vr13 +# CHECK-ENCODING: encoding: [0x2a,0x37,0x33,0x70] + +vaddwod.q.du $vr16, $vr23, $vr21 +# CHECK-INST: vaddwod.q.du $vr16, $vr23, $vr21 +# CHECK-ENCODING: encoding: [0xf0,0xd6,0x33,0x70] + +vaddwod.h.bu.b $vr30, $vr15, $vr2 +# CHECK-INST: vaddwod.h.bu.b $vr30, $vr15, $vr2 +# CHECK-ENCODING: encoding: [0xfe,0x09,0x40,0x70] + +vaddwod.w.hu.h $vr24, $vr30, $vr13 +# CHECK-INST: vaddwod.w.hu.h $vr24, $vr30, $vr13 +# CHECK-ENCODING: encoding: [0xd8,0xb7,0x40,0x70] + +vaddwod.d.wu.w $vr10, $vr26, $vr9 +# CHECK-INST: vaddwod.d.wu.w $vr10, $vr26, $vr9 +# CHECK-ENCODING: encoding: [0x4a,0x27,0x41,0x70] + +vaddwod.q.du.d $vr20, $vr9, $vr16 +# CHECK-INST: vaddwod.q.du.d $vr20, $vr9, $vr16 +# CHECK-ENCODING: encoding: [0x34,0xc1,0x41,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/and.s b/llvm/test/MC/LoongArch/lsx/and.s new file mode 100644 index 0000000000000..f9688c39ff27c --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/and.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vand.v $vr27, $vr30, $vr18 +# CHECK-INST: vand.v $vr27, $vr30, $vr18 +# CHECK-ENCODING: encoding: [0xdb,0x4b,0x26,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/andi.s b/llvm/test/MC/LoongArch/lsx/andi.s new file mode 100644 index 0000000000000..11732fbcbcfea --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/andi.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vandi.b $vr10, $vr2, 181 +# CHECK-INST: vandi.b $vr10, $vr2, 181 +# CHECK-ENCODING: encoding: [0x4a,0xd4,0xd2,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/andn.s b/llvm/test/MC/LoongArch/lsx/andn.s new file mode 100644 index 0000000000000..f682313b54b8b --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/andn.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vandn.v $vr1, $vr26, $vr28 +# CHECK-INST: vandn.v $vr1, $vr26, $vr28 +# CHECK-ENCODING: encoding: [0x41,0x73,0x28,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/avg.s b/llvm/test/MC/LoongArch/lsx/avg.s new file mode 100644 index 0000000000000..31b3c4a0aa37e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/avg.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vavg.b $vr13, $vr3, $vr24 +# CHECK-INST: vavg.b $vr13, $vr3, $vr24 +# CHECK-ENCODING: encoding: [0x6d,0x60,0x64,0x70] + +vavg.h $vr3, $vr6, $vr20 +# CHECK-INST: vavg.h $vr3, $vr6, $vr20 +# CHECK-ENCODING: encoding: [0xc3,0xd0,0x64,0x70] + +vavg.w $vr21, $vr7, $vr20 +# CHECK-INST: vavg.w $vr21, $vr7, $vr20 +# CHECK-ENCODING: encoding: [0xf5,0x50,0x65,0x70] + +vavg.d $vr6, $vr22, $vr23 +# CHECK-INST: vavg.d $vr6, $vr22, $vr23 +# CHECK-ENCODING: encoding: [0xc6,0xde,0x65,0x70] + +vavg.bu $vr13, $vr30, $vr16 +# CHECK-INST: vavg.bu $vr13, $vr30, $vr16 +# CHECK-ENCODING: encoding: [0xcd,0x43,0x66,0x70] + +vavg.hu $vr0, $vr15, $vr23 +# CHECK-INST: vavg.hu $vr0, $vr15, $vr23 +# CHECK-ENCODING: encoding: [0xe0,0xdd,0x66,0x70] + +vavg.wu $vr0, $vr17, $vr9 +# CHECK-INST: vavg.wu $vr0, $vr17, $vr9 +# CHECK-ENCODING: encoding: [0x20,0x26,0x67,0x70] + +vavg.du $vr7, $vr22, $vr14 +# CHECK-INST: vavg.du $vr7, $vr22, $vr14 +# CHECK-ENCODING: encoding: [0xc7,0xba,0x67,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/avgr.s b/llvm/test/MC/LoongArch/lsx/avgr.s new file mode 100644 index 0000000000000..566feba6a130e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/avgr.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vavgr.b $vr22, $vr3, $vr9 +# CHECK-INST: vavgr.b $vr22, $vr3, $vr9 +# CHECK-ENCODING: encoding: [0x76,0x24,0x68,0x70] + +vavgr.h $vr12, $vr2, $vr6 +# CHECK-INST: vavgr.h $vr12, $vr2, $vr6 +# CHECK-ENCODING: encoding: [0x4c,0x98,0x68,0x70] + +vavgr.w $vr16, $vr30, $vr13 +# CHECK-INST: vavgr.w $vr16, $vr30, $vr13 +# CHECK-ENCODING: encoding: [0xd0,0x37,0x69,0x70] + +vavgr.d $vr5, $vr18, $vr7 +# CHECK-INST: vavgr.d $vr5, $vr18, $vr7 +# CHECK-ENCODING: encoding: [0x45,0x9e,0x69,0x70] + +vavgr.bu $vr22, $vr5, $vr29 +# CHECK-INST: vavgr.bu $vr22, $vr5, $vr29 +# CHECK-ENCODING: encoding: [0xb6,0x74,0x6a,0x70] + +vavgr.hu $vr22, $vr23, $vr8 +# CHECK-INST: vavgr.hu $vr22, $vr23, $vr8 +# CHECK-ENCODING: encoding: [0xf6,0xa2,0x6a,0x70] + +vavgr.wu $vr10, $vr20, $vr21 +# CHECK-INST: vavgr.wu $vr10, $vr20, $vr21 +# CHECK-ENCODING: encoding: [0x8a,0x56,0x6b,0x70] + +vavgr.du $vr10, $vr28, $vr13 +# CHECK-INST: vavgr.du $vr10, $vr28, $vr13 +# CHECK-ENCODING: encoding: [0x8a,0xb7,0x6b,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/bitclr.s b/llvm/test/MC/LoongArch/lsx/bitclr.s new file mode 100644 index 0000000000000..227f90c2a6f76 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bitclr.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbitclr.b $vr1, $vr0, $vr30 +# CHECK-INST: vbitclr.b $vr1, $vr0, $vr30 +# CHECK-ENCODING: encoding: [0x01,0x78,0x0c,0x71] + +vbitclr.h $vr27, $vr5, $vr28 +# CHECK-INST: vbitclr.h $vr27, $vr5, $vr28 +# CHECK-ENCODING: encoding: [0xbb,0xf0,0x0c,0x71] + +vbitclr.w $vr3, $vr30, $vr14 +# CHECK-INST: vbitclr.w $vr3, $vr30, $vr14 +# CHECK-ENCODING: encoding: [0xc3,0x3b,0x0d,0x71] + +vbitclr.d $vr25, $vr11, $vr4 +# CHECK-INST: vbitclr.d $vr25, $vr11, $vr4 +# CHECK-ENCODING: encoding: [0x79,0x91,0x0d,0x71] + +vbitclri.b $vr15, $vr25, 4 +# CHECK-INST: vbitclri.b $vr15, $vr25, 4 +# CHECK-ENCODING: encoding: [0x2f,0x33,0x10,0x73] + +vbitclri.h $vr24, $vr22, 1 +# CHECK-INST: vbitclri.h $vr24, $vr22, 1 +# CHECK-ENCODING: encoding: [0xd8,0x46,0x10,0x73] + +vbitclri.w $vr30, $vr20, 1 +# CHECK-INST: vbitclri.w $vr30, $vr20, 1 +# CHECK-ENCODING: encoding: [0x9e,0x86,0x10,0x73] + +vbitclri.d $vr5, $vr0, 16 +# CHECK-INST: vbitclri.d $vr5, $vr0, 16 +# CHECK-ENCODING: encoding: [0x05,0x40,0x11,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/bitrev.s b/llvm/test/MC/LoongArch/lsx/bitrev.s new file mode 100644 index 0000000000000..852500be5c8be --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bitrev.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbitrev.b $vr4, $vr31, $vr10 +# CHECK-INST: vbitrev.b $vr4, $vr31, $vr10 +# CHECK-ENCODING: encoding: [0xe4,0x2b,0x10,0x71] + +vbitrev.h $vr19, $vr19, $vr16 +# CHECK-INST: vbitrev.h $vr19, $vr19, $vr16 +# CHECK-ENCODING: encoding: [0x73,0xc2,0x10,0x71] + +vbitrev.w $vr4, $vr18, $vr7 +# CHECK-INST: vbitrev.w $vr4, $vr18, $vr7 +# CHECK-ENCODING: encoding: [0x44,0x1e,0x11,0x71] + +vbitrev.d $vr17, $vr31, $vr0 +# CHECK-INST: vbitrev.d $vr17, $vr31, $vr0 +# CHECK-ENCODING: encoding: [0xf1,0x83,0x11,0x71] + +vbitrevi.b $vr9, $vr31, 7 +# CHECK-INST: vbitrevi.b $vr9, $vr31, 7 +# CHECK-ENCODING: encoding: [0xe9,0x3f,0x18,0x73] + +vbitrevi.h $vr4, $vr24, 8 +# CHECK-INST: vbitrevi.h $vr4, $vr24, 8 +# CHECK-ENCODING: encoding: [0x04,0x63,0x18,0x73] + +vbitrevi.w $vr17, $vr19, 2 +# CHECK-INST: vbitrevi.w $vr17, $vr19, 2 +# CHECK-ENCODING: encoding: [0x71,0x8a,0x18,0x73] + +vbitrevi.d $vr15, $vr7, 47 +# CHECK-INST: vbitrevi.d $vr15, $vr7, 47 +# CHECK-ENCODING: encoding: [0xef,0xbc,0x19,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/bitsel.s b/llvm/test/MC/LoongArch/lsx/bitsel.s new file mode 100644 index 0000000000000..54cce96470ffa --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bitsel.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbitsel.v $vr2, $vr28, $vr6, $vr30 +# CHECK-INST: vbitsel.v $vr2, $vr28, $vr6, $vr30 +# CHECK-ENCODING: encoding: [0x82,0x1b,0x1f,0x0d] diff --git a/llvm/test/MC/LoongArch/lsx/bitseli.s b/llvm/test/MC/LoongArch/lsx/bitseli.s new file mode 100644 index 0000000000000..6ca8a67d2de84 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bitseli.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbitseli.b $vr9, $vr0, 110 +# CHECK-INST: vbitseli.b $vr9, $vr0, 110 +# CHECK-ENCODING: encoding: [0x09,0xb8,0xc5,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/bitset.s b/llvm/test/MC/LoongArch/lsx/bitset.s new file mode 100644 index 0000000000000..3553fc07ec85b --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bitset.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbitset.b $vr13, $vr27, $vr14 +# CHECK-INST: vbitset.b $vr13, $vr27, $vr14 +# CHECK-ENCODING: encoding: [0x6d,0x3b,0x0e,0x71] + +vbitset.h $vr24, $vr6, $vr3 +# CHECK-INST: vbitset.h $vr24, $vr6, $vr3 +# CHECK-ENCODING: encoding: [0xd8,0x8c,0x0e,0x71] + +vbitset.w $vr31, $vr0, $vr0 +# CHECK-INST: vbitset.w $vr31, $vr0, $vr0 +# CHECK-ENCODING: encoding: [0x1f,0x00,0x0f,0x71] + +vbitset.d $vr6, $vr15, $vr31 +# CHECK-INST: vbitset.d $vr6, $vr15, $vr31 +# CHECK-ENCODING: encoding: [0xe6,0xfd,0x0f,0x71] + +vbitseti.b $vr4, $vr3, 1 +# CHECK-INST: vbitseti.b $vr4, $vr3, 1 +# CHECK-ENCODING: encoding: [0x64,0x24,0x14,0x73] + +vbitseti.h $vr10, $vr20, 2 +# CHECK-INST: vbitseti.h $vr10, $vr20, 2 +# CHECK-ENCODING: encoding: [0x8a,0x4a,0x14,0x73] + +vbitseti.w $vr14, $vr16, 4 +# CHECK-INST: vbitseti.w $vr14, $vr16, 4 +# CHECK-ENCODING: encoding: [0x0e,0x92,0x14,0x73] + +vbitseti.d $vr10, $vr13, 25 +# CHECK-INST: vbitseti.d $vr10, $vr13, 25 +# CHECK-ENCODING: encoding: [0xaa,0x65,0x15,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/bsll.s b/llvm/test/MC/LoongArch/lsx/bsll.s new file mode 100644 index 0000000000000..24625180fb56c --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bsll.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbsll.v $vr21, $vr1, 17 +# CHECK-INST: vbsll.v $vr21, $vr1, 17 +# CHECK-ENCODING: encoding: [0x35,0x44,0x8e,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/bsrl.s b/llvm/test/MC/LoongArch/lsx/bsrl.s new file mode 100644 index 0000000000000..2b9ab996bb5bf --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/bsrl.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vbsrl.v $vr14, $vr15, 24 +# CHECK-INST: vbsrl.v $vr14, $vr15, 24 +# CHECK-ENCODING: encoding: [0xee,0xe1,0x8e,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/clo.s b/llvm/test/MC/LoongArch/lsx/clo.s new file mode 100644 index 0000000000000..de876176aad3e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/clo.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vclo.b $vr2, $vr0 +# CHECK-INST: vclo.b $vr2, $vr0 +# CHECK-ENCODING: encoding: [0x02,0x00,0x9c,0x72] + +vclo.h $vr23, $vr31 +# CHECK-INST: vclo.h $vr23, $vr31 +# CHECK-ENCODING: encoding: [0xf7,0x07,0x9c,0x72] + +vclo.w $vr7, $vr28 +# CHECK-INST: vclo.w $vr7, $vr28 +# CHECK-ENCODING: encoding: [0x87,0x0b,0x9c,0x72] + +vclo.d $vr5, $vr11 +# CHECK-INST: vclo.d $vr5, $vr11 +# CHECK-ENCODING: encoding: [0x65,0x0d,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/clz.s b/llvm/test/MC/LoongArch/lsx/clz.s new file mode 100644 index 0000000000000..de8c603109f5e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/clz.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vclz.b $vr22, $vr14 +# CHECK-INST: vclz.b $vr22, $vr14 +# CHECK-ENCODING: encoding: [0xd6,0x11,0x9c,0x72] + +vclz.h $vr16, $vr0 +# CHECK-INST: vclz.h $vr16, $vr0 +# CHECK-ENCODING: encoding: [0x10,0x14,0x9c,0x72] + +vclz.w $vr19, $vr19 +# CHECK-INST: vclz.w $vr19, $vr19 +# CHECK-ENCODING: encoding: [0x73,0x1a,0x9c,0x72] + +vclz.d $vr27, $vr14 +# CHECK-INST: vclz.d $vr27, $vr14 +# CHECK-ENCODING: encoding: [0xdb,0x1d,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/div.s b/llvm/test/MC/LoongArch/lsx/div.s new file mode 100644 index 0000000000000..625c2a1b425e1 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/div.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vdiv.b $vr26, $vr17, $vr24 +# CHECK-INST: vdiv.b $vr26, $vr17, $vr24 +# CHECK-ENCODING: encoding: [0x3a,0x62,0xe0,0x70] + +vdiv.h $vr26, $vr23, $vr21 +# CHECK-INST: vdiv.h $vr26, $vr23, $vr21 +# CHECK-ENCODING: encoding: [0xfa,0xd6,0xe0,0x70] + +vdiv.w $vr1, $vr13, $vr10 +# CHECK-INST: vdiv.w $vr1, $vr13, $vr10 +# CHECK-ENCODING: encoding: [0xa1,0x29,0xe1,0x70] + +vdiv.d $vr4, $vr25, $vr21 +# CHECK-INST: vdiv.d $vr4, $vr25, $vr21 +# CHECK-ENCODING: encoding: [0x24,0xd7,0xe1,0x70] + +vdiv.bu $vr13, $vr13, $vr6 +# CHECK-INST: vdiv.bu $vr13, $vr13, $vr6 +# CHECK-ENCODING: encoding: [0xad,0x19,0xe4,0x70] + +vdiv.hu $vr1, $vr30, $vr5 +# CHECK-INST: vdiv.hu $vr1, $vr30, $vr5 +# CHECK-ENCODING: encoding: [0xc1,0x97,0xe4,0x70] + +vdiv.wu $vr27, $vr31, $vr20 +# CHECK-INST: vdiv.wu $vr27, $vr31, $vr20 +# CHECK-ENCODING: encoding: [0xfb,0x53,0xe5,0x70] + +vdiv.du $vr30, $vr0, $vr5 +# CHECK-INST: vdiv.du $vr30, $vr0, $vr5 +# CHECK-ENCODING: encoding: [0x1e,0x94,0xe5,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/exth.s b/llvm/test/MC/LoongArch/lsx/exth.s new file mode 100644 index 0000000000000..3a64bd9273763 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/exth.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vexth.h.b $vr9, $vr6 +# CHECK-INST: vexth.h.b $vr9, $vr6 +# CHECK-ENCODING: encoding: [0xc9,0xe0,0x9e,0x72] + +vexth.w.h $vr14, $vr19 +# CHECK-INST: vexth.w.h $vr14, $vr19 +# CHECK-ENCODING: encoding: [0x6e,0xe6,0x9e,0x72] + +vexth.d.w $vr1, $vr20 +# CHECK-INST: vexth.d.w $vr1, $vr20 +# CHECK-ENCODING: encoding: [0x81,0xea,0x9e,0x72] + +vexth.q.d $vr20, $vr10 +# CHECK-INST: vexth.q.d $vr20, $vr10 +# CHECK-ENCODING: encoding: [0x54,0xed,0x9e,0x72] + +vexth.hu.bu $vr5, $vr1 +# CHECK-INST: vexth.hu.bu $vr5, $vr1 +# CHECK-ENCODING: encoding: [0x25,0xf0,0x9e,0x72] + +vexth.wu.hu $vr17, $vr26 +# CHECK-INST: vexth.wu.hu $vr17, $vr26 +# CHECK-ENCODING: encoding: [0x51,0xf7,0x9e,0x72] + +vexth.du.wu $vr2, $vr7 +# CHECK-INST: vexth.du.wu $vr2, $vr7 +# CHECK-ENCODING: encoding: [0xe2,0xf8,0x9e,0x72] + +vexth.qu.du $vr19, $vr11 +# CHECK-INST: vexth.qu.du $vr19, $vr11 +# CHECK-ENCODING: encoding: [0x73,0xfd,0x9e,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/extl.s b/llvm/test/MC/LoongArch/lsx/extl.s new file mode 100644 index 0000000000000..cce80e2f1fe3c --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/extl.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vextl.q.d $vr14, $vr20 +# CHECK-INST: vextl.q.d $vr14, $vr20 +# CHECK-ENCODING: encoding: [0x8e,0x02,0x09,0x73] + +vextl.qu.du $vr26, $vr26 +# CHECK-INST: vextl.qu.du $vr26, $vr26 +# CHECK-ENCODING: encoding: [0x5a,0x03,0x0d,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/extrins.s b/llvm/test/MC/LoongArch/lsx/extrins.s new file mode 100644 index 0000000000000..ef279b7be5055 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/extrins.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vextrins.b $vr14, $vr19, 213 +# CHECK-INST: vextrins.b $vr14, $vr19, 213 +# CHECK-ENCODING: encoding: [0x6e,0x56,0x8f,0x73] + +vextrins.h $vr1, $vr6, 170 +# CHECK-INST: vextrins.h $vr1, $vr6, 170 +# CHECK-ENCODING: encoding: [0xc1,0xa8,0x8a,0x73] + +vextrins.w $vr9, $vr4, 189 +# CHECK-INST: vextrins.w $vr9, $vr4, 189 +# CHECK-ENCODING: encoding: [0x89,0xf4,0x86,0x73] + +vextrins.d $vr20, $vr25, 121 +# CHECK-INST: vextrins.d $vr20, $vr25, 121 +# CHECK-ENCODING: encoding: [0x34,0xe7,0x81,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/fadd.s b/llvm/test/MC/LoongArch/lsx/fadd.s new file mode 100644 index 0000000000000..55e67cf9096dc --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fadd.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfadd.s $vr10, $vr2, $vr15 +# CHECK-INST: vfadd.s $vr10, $vr2, $vr15 +# CHECK-ENCODING: encoding: [0x4a,0xbc,0x30,0x71] + +vfadd.d $vr16, $vr1, $vr22 +# CHECK-INST: vfadd.d $vr16, $vr1, $vr22 +# CHECK-ENCODING: encoding: [0x30,0x58,0x31,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fclass.s b/llvm/test/MC/LoongArch/lsx/fclass.s new file mode 100644 index 0000000000000..4f4ad1ef2a225 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fclass.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfclass.s $vr24, $vr26 +# CHECK-INST: vfclass.s $vr24, $vr26 +# CHECK-ENCODING: encoding: [0x58,0xd7,0x9c,0x72] + +vfclass.d $vr8, $vr17 +# CHECK-INST: vfclass.d $vr8, $vr17 +# CHECK-ENCODING: encoding: [0x28,0xda,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/fcmp.s b/llvm/test/MC/LoongArch/lsx/fcmp.s new file mode 100644 index 0000000000000..c7ea5bd044106 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fcmp.s @@ -0,0 +1,180 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfcmp.caf.s $vr25, $vr5, $vr4 +# CHECK-INST: vfcmp.caf.s $vr25, $vr5, $vr4 +# CHECK-ENCODING: encoding: [0xb9,0x10,0x50,0x0c] + +vfcmp.caf.d $vr14, $vr16, $vr23 +# CHECK-INST: vfcmp.caf.d $vr14, $vr16, $vr23 +# CHECK-ENCODING: encoding: [0x0e,0x5e,0x60,0x0c] + +vfcmp.cun.s $vr22, $vr15, $vr4 +# CHECK-INST: vfcmp.cun.s $vr22, $vr15, $vr4 +# CHECK-ENCODING: encoding: [0xf6,0x11,0x54,0x0c] + +vfcmp.cun.d $vr28, $vr27, $vr9 +# CHECK-INST: vfcmp.cun.d $vr28, $vr27, $vr9 +# CHECK-ENCODING: encoding: [0x7c,0x27,0x64,0x0c] + +vfcmp.ceq.s $vr20, $vr24, $vr29 +# CHECK-INST: vfcmp.ceq.s $vr20, $vr24, $vr29 +# CHECK-ENCODING: encoding: [0x14,0x77,0x52,0x0c] + +vfcmp.ceq.d $vr15, $vr23, $vr17 +# CHECK-INST: vfcmp.ceq.d $vr15, $vr23, $vr17 +# CHECK-ENCODING: encoding: [0xef,0x46,0x62,0x0c] + +vfcmp.cueq.s $vr26, $vr31, $vr19 +# CHECK-INST: vfcmp.cueq.s $vr26, $vr31, $vr19 +# CHECK-ENCODING: encoding: [0xfa,0x4f,0x56,0x0c] + +vfcmp.cueq.d $vr27, $vr10, $vr16 +# CHECK-INST: vfcmp.cueq.d $vr27, $vr10, $vr16 +# CHECK-ENCODING: encoding: [0x5b,0x41,0x66,0x0c] + +vfcmp.clt.s $vr6, $vr27, $vr2 +# CHECK-INST: vfcmp.clt.s $vr6, $vr27, $vr2 +# CHECK-ENCODING: encoding: [0x66,0x0b,0x51,0x0c] + +vfcmp.clt.d $vr11, $vr8, $vr6 +# CHECK-INST: vfcmp.clt.d $vr11, $vr8, $vr6 +# CHECK-ENCODING: encoding: [0x0b,0x19,0x61,0x0c] + +vfcmp.cult.s $vr1, $vr17, $vr2 +# CHECK-INST: vfcmp.cult.s $vr1, $vr17, $vr2 +# CHECK-ENCODING: encoding: [0x21,0x0a,0x55,0x0c] + +vfcmp.cult.d $vr11, $vr20, $vr7 +# CHECK-INST: vfcmp.cult.d $vr11, $vr20, $vr7 +# CHECK-ENCODING: encoding: [0x8b,0x1e,0x65,0x0c] + +vfcmp.cle.s $vr10, $vr20, $vr23 +# CHECK-INST: vfcmp.cle.s $vr10, $vr20, $vr23 +# CHECK-ENCODING: encoding: [0x8a,0x5e,0x53,0x0c] + +vfcmp.cle.d $vr1, $vr8, $vr18 +# CHECK-INST: vfcmp.cle.d $vr1, $vr8, $vr18 +# CHECK-ENCODING: encoding: [0x01,0x49,0x63,0x0c] + +vfcmp.cule.s $vr6, $vr15, $vr11 +# CHECK-INST: vfcmp.cule.s $vr6, $vr15, $vr11 +# CHECK-ENCODING: encoding: [0xe6,0x2d,0x57,0x0c] + +vfcmp.cule.d $vr11, $vr28, $vr30 +# CHECK-INST: vfcmp.cule.d $vr11, $vr28, $vr30 +# CHECK-ENCODING: encoding: [0x8b,0x7b,0x67,0x0c] + +vfcmp.cne.s $vr29, $vr28, $vr11 +# CHECK-INST: vfcmp.cne.s $vr29, $vr28, $vr11 +# CHECK-ENCODING: encoding: [0x9d,0x2f,0x58,0x0c] + +vfcmp.cne.d $vr20, $vr5, $vr7 +# CHECK-INST: vfcmp.cne.d $vr20, $vr5, $vr7 +# CHECK-ENCODING: encoding: [0xb4,0x1c,0x68,0x0c] + +vfcmp.cor.s $vr20, $vr17, $vr12 +# CHECK-INST: vfcmp.cor.s $vr20, $vr17, $vr12 +# CHECK-ENCODING: encoding: [0x34,0x32,0x5a,0x0c] + +vfcmp.cor.d $vr25, $vr10, $vr16 +# CHECK-INST: vfcmp.cor.d $vr25, $vr10, $vr16 +# CHECK-ENCODING: encoding: [0x59,0x41,0x6a,0x0c] + +vfcmp.cune.s $vr26, $vr7, $vr8 +# CHECK-INST: vfcmp.cune.s $vr26, $vr7, $vr8 +# CHECK-ENCODING: encoding: [0xfa,0x20,0x5c,0x0c] + +vfcmp.cune.d $vr13, $vr31, $vr3 +# CHECK-INST: vfcmp.cune.d $vr13, $vr31, $vr3 +# CHECK-ENCODING: encoding: [0xed,0x0f,0x6c,0x0c] + +vfcmp.saf.s $vr26, $vr25, $vr5 +# CHECK-INST: vfcmp.saf.s $vr26, $vr25, $vr5 +# CHECK-ENCODING: encoding: [0x3a,0x97,0x50,0x0c] + +vfcmp.saf.d $vr5, $vr29, $vr21 +# CHECK-INST: vfcmp.saf.d $vr5, $vr29, $vr21 +# CHECK-ENCODING: encoding: [0xa5,0xd7,0x60,0x0c] + +vfcmp.sun.s $vr2, $vr2, $vr11 +# CHECK-INST: vfcmp.sun.s $vr2, $vr2, $vr11 +# CHECK-ENCODING: encoding: [0x42,0xac,0x54,0x0c] + +vfcmp.sun.d $vr30, $vr23, $vr23 +# CHECK-INST: vfcmp.sun.d $vr30, $vr23, $vr23 +# CHECK-ENCODING: encoding: [0xfe,0xde,0x64,0x0c] + +vfcmp.seq.s $vr4, $vr24, $vr31 +# CHECK-INST: vfcmp.seq.s $vr4, $vr24, $vr31 +# CHECK-ENCODING: encoding: [0x04,0xff,0x52,0x0c] + +vfcmp.seq.d $vr28, $vr28, $vr5 +# CHECK-INST: vfcmp.seq.d $vr28, $vr28, $vr5 +# CHECK-ENCODING: encoding: [0x9c,0x97,0x62,0x0c] + +vfcmp.sueq.s $vr2, $vr25, $vr29 +# CHECK-INST: vfcmp.sueq.s $vr2, $vr25, $vr29 +# CHECK-ENCODING: encoding: [0x22,0xf7,0x56,0x0c] + +vfcmp.sueq.d $vr26, $vr16, $vr0 +# CHECK-INST: vfcmp.sueq.d $vr26, $vr16, $vr0 +# CHECK-ENCODING: encoding: [0x1a,0x82,0x66,0x0c] + +vfcmp.slt.s $vr8, $vr22, $vr5 +# CHECK-INST: vfcmp.slt.s $vr8, $vr22, $vr5 +# CHECK-ENCODING: encoding: [0xc8,0x96,0x51,0x0c] + +vfcmp.slt.d $vr13, $vr8, $vr22 +# CHECK-INST: vfcmp.slt.d $vr13, $vr8, $vr22 +# CHECK-ENCODING: encoding: [0x0d,0xd9,0x61,0x0c] + +vfcmp.sult.s $vr16, $vr4, $vr21 +# CHECK-INST: vfcmp.sult.s $vr16, $vr4, $vr21 +# CHECK-ENCODING: encoding: [0x90,0xd4,0x55,0x0c] + +vfcmp.sult.d $vr28, $vr14, $vr4 +# CHECK-INST: vfcmp.sult.d $vr28, $vr14, $vr4 +# CHECK-ENCODING: encoding: [0xdc,0x91,0x65,0x0c] + +vfcmp.sle.s $vr13, $vr21, $vr8 +# CHECK-INST: vfcmp.sle.s $vr13, $vr21, $vr8 +# CHECK-ENCODING: encoding: [0xad,0xa2,0x53,0x0c] + +vfcmp.sle.d $vr3, $vr18, $vr9 +# CHECK-INST: vfcmp.sle.d $vr3, $vr18, $vr9 +# CHECK-ENCODING: encoding: [0x43,0xa6,0x63,0x0c] + +vfcmp.sule.s $vr8, $vr23, $vr19 +# CHECK-INST: vfcmp.sule.s $vr8, $vr23, $vr19 +# CHECK-ENCODING: encoding: [0xe8,0xce,0x57,0x0c] + +vfcmp.sule.d $vr22, $vr17, $vr11 +# CHECK-INST: vfcmp.sule.d $vr22, $vr17, $vr11 +# CHECK-ENCODING: encoding: [0x36,0xae,0x67,0x0c] + +vfcmp.sne.s $vr17, $vr25, $vr6 +# CHECK-INST: vfcmp.sne.s $vr17, $vr25, $vr6 +# CHECK-ENCODING: encoding: [0x31,0x9b,0x58,0x0c] + +vfcmp.sne.d $vr3, $vr1, $vr28 +# CHECK-INST: vfcmp.sne.d $vr3, $vr1, $vr28 +# CHECK-ENCODING: encoding: [0x23,0xf0,0x68,0x0c] + +vfcmp.sor.s $vr31, $vr20, $vr11 +# CHECK-INST: vfcmp.sor.s $vr31, $vr20, $vr11 +# CHECK-ENCODING: encoding: [0x9f,0xae,0x5a,0x0c] + +vfcmp.sor.d $vr18, $vr4, $vr15 +# CHECK-INST: vfcmp.sor.d $vr18, $vr4, $vr15 +# CHECK-ENCODING: encoding: [0x92,0xbc,0x6a,0x0c] + +vfcmp.sune.s $vr16, $vr17, $vr15 +# CHECK-INST: vfcmp.sune.s $vr16, $vr17, $vr15 +# CHECK-ENCODING: encoding: [0x30,0xbe,0x5c,0x0c] + +vfcmp.sune.d $vr23, $vr1, $vr19 +# CHECK-INST: vfcmp.sune.d $vr23, $vr1, $vr19 +# CHECK-ENCODING: encoding: [0x37,0xcc,0x6c,0x0c] diff --git a/llvm/test/MC/LoongArch/lsx/fcvt.s b/llvm/test/MC/LoongArch/lsx/fcvt.s new file mode 100644 index 0000000000000..30689a79fdfe4 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fcvt.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfcvt.h.s $vr30, $vr1, $vr30 +# CHECK-INST: vfcvt.h.s $vr30, $vr1, $vr30 +# CHECK-ENCODING: encoding: [0x3e,0x78,0x46,0x71] + +vfcvt.s.d $vr27, $vr11, $vr4 +# CHECK-INST: vfcvt.s.d $vr27, $vr11, $vr4 +# CHECK-ENCODING: encoding: [0x7b,0x91,0x46,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fcvth.s b/llvm/test/MC/LoongArch/lsx/fcvth.s new file mode 100644 index 0000000000000..09d2dad6526b2 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fcvth.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfcvth.s.h $vr7, $vr30 +# CHECK-INST: vfcvth.s.h $vr7, $vr30 +# CHECK-ENCODING: encoding: [0xc7,0xef,0x9d,0x72] + +vfcvth.d.s $vr15, $vr14 +# CHECK-INST: vfcvth.d.s $vr15, $vr14 +# CHECK-ENCODING: encoding: [0xcf,0xf5,0x9d,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/fcvtl.s b/llvm/test/MC/LoongArch/lsx/fcvtl.s new file mode 100644 index 0000000000000..bb45be02c61f8 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fcvtl.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfcvtl.s.h $vr26, $vr23 +# CHECK-INST: vfcvtl.s.h $vr26, $vr23 +# CHECK-ENCODING: encoding: [0xfa,0xea,0x9d,0x72] + +vfcvtl.d.s $vr3, $vr7 +# CHECK-INST: vfcvtl.d.s $vr3, $vr7 +# CHECK-ENCODING: encoding: [0xe3,0xf0,0x9d,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/fdiv.s b/llvm/test/MC/LoongArch/lsx/fdiv.s new file mode 100644 index 0000000000000..cb3b536c63a41 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fdiv.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfdiv.s $vr27, $vr12, $vr26 +# CHECK-INST: vfdiv.s $vr27, $vr12, $vr26 +# CHECK-ENCODING: encoding: [0x9b,0xe9,0x3a,0x71] + +vfdiv.d $vr3, $vr1, $vr7 +# CHECK-INST: vfdiv.d $vr3, $vr1, $vr7 +# CHECK-ENCODING: encoding: [0x23,0x1c,0x3b,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ffint.s b/llvm/test/MC/LoongArch/lsx/ffint.s new file mode 100644 index 0000000000000..e6340d161282c --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ffint.s @@ -0,0 +1,32 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vffint.s.w $vr3, $vr0 +# CHECK-INST: vffint.s.w $vr3, $vr0 +# CHECK-ENCODING: encoding: [0x03,0x00,0x9e,0x72] + +vffint.d.l $vr2, $vr15 +# CHECK-INST: vffint.d.l $vr2, $vr15 +# CHECK-ENCODING: encoding: [0xe2,0x09,0x9e,0x72] + +vffint.s.wu $vr5, $vr9 +# CHECK-INST: vffint.s.wu $vr5, $vr9 +# CHECK-ENCODING: encoding: [0x25,0x05,0x9e,0x72] + +vffint.d.lu $vr6, $vr13 +# CHECK-INST: vffint.d.lu $vr6, $vr13 +# CHECK-ENCODING: encoding: [0xa6,0x0d,0x9e,0x72] + +vffintl.d.w $vr26, $vr1 +# CHECK-INST: vffintl.d.w $vr26, $vr1 +# CHECK-ENCODING: encoding: [0x3a,0x10,0x9e,0x72] + +vffinth.d.w $vr18, $vr21 +# CHECK-INST: vffinth.d.w $vr18, $vr21 +# CHECK-ENCODING: encoding: [0xb2,0x16,0x9e,0x72] + +vffint.s.l $vr29, $vr12, $vr7 +# CHECK-INST: vffint.s.l $vr29, $vr12, $vr7 +# CHECK-ENCODING: encoding: [0x9d,0x1d,0x48,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/flogb.s b/llvm/test/MC/LoongArch/lsx/flogb.s new file mode 100644 index 0000000000000..3c788b96fa379 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/flogb.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vflogb.s $vr12, $vr20 +# CHECK-INST: vflogb.s $vr12, $vr20 +# CHECK-ENCODING: encoding: [0x8c,0xc6,0x9c,0x72] + +vflogb.d $vr3, $vr29 +# CHECK-INST: vflogb.d $vr3, $vr29 +# CHECK-ENCODING: encoding: [0xa3,0xcb,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/fmadd.s b/llvm/test/MC/LoongArch/lsx/fmadd.s new file mode 100644 index 0000000000000..a31e12120ff18 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmadd.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmadd.s $vr6, $vr7, $vr13, $vr24 +# CHECK-INST: vfmadd.s $vr6, $vr7, $vr13, $vr24 +# CHECK-ENCODING: encoding: [0xe6,0x34,0x1c,0x09] + +vfmadd.d $vr3, $vr28, $vr2, $vr21 +# CHECK-INST: vfmadd.d $vr3, $vr28, $vr2, $vr21 +# CHECK-ENCODING: encoding: [0x83,0x8b,0x2a,0x09] diff --git a/llvm/test/MC/LoongArch/lsx/fmax.s b/llvm/test/MC/LoongArch/lsx/fmax.s new file mode 100644 index 0000000000000..8fcd32aeb5540 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmax.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmax.s $vr19, $vr25, $vr16 +# CHECK-INST: vfmax.s $vr19, $vr25, $vr16 +# CHECK-ENCODING: encoding: [0x33,0xc3,0x3c,0x71] + +vfmax.d $vr19, $vr21, $vr12 +# CHECK-INST: vfmax.d $vr19, $vr21, $vr12 +# CHECK-ENCODING: encoding: [0xb3,0x32,0x3d,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fmaxa.s b/llvm/test/MC/LoongArch/lsx/fmaxa.s new file mode 100644 index 0000000000000..3e35c329d126c --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmaxa.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmaxa.s $vr2, $vr8, $vr1 +# CHECK-INST: vfmaxa.s $vr2, $vr8, $vr1 +# CHECK-ENCODING: encoding: [0x02,0x85,0x40,0x71] + +vfmaxa.d $vr1, $vr8, $vr28 +# CHECK-INST: vfmaxa.d $vr1, $vr8, $vr28 +# CHECK-ENCODING: encoding: [0x01,0x71,0x41,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fmin.s b/llvm/test/MC/LoongArch/lsx/fmin.s new file mode 100644 index 0000000000000..b398fe70d27f4 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmin.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmin.s $vr18, $vr17, $vr1 +# CHECK-INST: vfmin.s $vr18, $vr17, $vr1 +# CHECK-ENCODING: encoding: [0x32,0x86,0x3e,0x71] + +vfmin.d $vr30, $vr12, $vr5 +# CHECK-INST: vfmin.d $vr30, $vr12, $vr5 +# CHECK-ENCODING: encoding: [0x9e,0x15,0x3f,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fmina.s b/llvm/test/MC/LoongArch/lsx/fmina.s new file mode 100644 index 0000000000000..d206819aef8c0 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmina.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmina.s $vr20, $vr27, $vr20 +# CHECK-INST: vfmina.s $vr20, $vr27, $vr20 +# CHECK-ENCODING: encoding: [0x74,0xd3,0x42,0x71] + +vfmina.d $vr1, $vr26, $vr22 +# CHECK-INST: vfmina.d $vr1, $vr26, $vr22 +# CHECK-ENCODING: encoding: [0x41,0x5b,0x43,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fmsub.s b/llvm/test/MC/LoongArch/lsx/fmsub.s new file mode 100644 index 0000000000000..84ce341de0399 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmsub.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmsub.s $vr25, $vr30, $vr4, $vr13 +# CHECK-INST: vfmsub.s $vr25, $vr30, $vr4, $vr13 +# CHECK-ENCODING: encoding: [0xd9,0x93,0x56,0x09] + +vfmsub.d $vr3, $vr1, $vr0, $vr19 +# CHECK-INST: vfmsub.d $vr3, $vr1, $vr0, $vr19 +# CHECK-ENCODING: encoding: [0x23,0x80,0x69,0x09] diff --git a/llvm/test/MC/LoongArch/lsx/fmul.s b/llvm/test/MC/LoongArch/lsx/fmul.s new file mode 100644 index 0000000000000..a409a6a4020d6 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fmul.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfmul.s $vr16, $vr8, $vr17 +# CHECK-INST: vfmul.s $vr16, $vr8, $vr17 +# CHECK-ENCODING: encoding: [0x10,0xc5,0x38,0x71] + +vfmul.d $vr3, $vr6, $vr1 +# CHECK-INST: vfmul.d $vr3, $vr6, $vr1 +# CHECK-ENCODING: encoding: [0xc3,0x04,0x39,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/fnmadd.s b/llvm/test/MC/LoongArch/lsx/fnmadd.s new file mode 100644 index 0000000000000..1887d2688b6da --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fnmadd.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfnmadd.s $vr26, $vr26, $vr13, $vr9 +# CHECK-INST: vfnmadd.s $vr26, $vr26, $vr13, $vr9 +# CHECK-ENCODING: encoding: [0x5a,0xb7,0x94,0x09] + +vfnmadd.d $vr12, $vr27, $vr31, $vr5 +# CHECK-INST: vfnmadd.d $vr12, $vr27, $vr31, $vr5 +# CHECK-ENCODING: encoding: [0x6c,0xff,0xa2,0x09] diff --git a/llvm/test/MC/LoongArch/lsx/fnmsub.s b/llvm/test/MC/LoongArch/lsx/fnmsub.s new file mode 100644 index 0000000000000..e1135d1b29681 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fnmsub.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfnmsub.s $vr2, $vr21, $vr9, $vr2 +# CHECK-INST: vfnmsub.s $vr2, $vr21, $vr9, $vr2 +# CHECK-ENCODING: encoding: [0xa2,0x26,0xd1,0x09] + +vfnmsub.d $vr4, $vr12, $vr27, $vr19 +# CHECK-INST: vfnmsub.d $vr4, $vr12, $vr27, $vr19 +# CHECK-ENCODING: encoding: [0x84,0xed,0xe9,0x09] diff --git a/llvm/test/MC/LoongArch/lsx/frecip.s b/llvm/test/MC/LoongArch/lsx/frecip.s new file mode 100644 index 0000000000000..d8c8278d16675 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/frecip.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfrecip.s $vr29, $vr14 +# CHECK-INST: vfrecip.s $vr29, $vr14 +# CHECK-ENCODING: encoding: [0xdd,0xf5,0x9c,0x72] + +vfrecip.d $vr24, $vr9 +# CHECK-INST: vfrecip.d $vr24, $vr9 +# CHECK-ENCODING: encoding: [0x38,0xf9,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/frint.s b/llvm/test/MC/LoongArch/lsx/frint.s new file mode 100644 index 0000000000000..53a43a4d3ecf2 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/frint.s @@ -0,0 +1,44 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfrintrne.s $vr31, $vr2 +# CHECK-INST: vfrintrne.s $vr31, $vr2 +# CHECK-ENCODING: encoding: [0x5f,0x74,0x9d,0x72] + +vfrintrne.d $vr1, $vr30 +# CHECK-INST: vfrintrne.d $vr1, $vr30 +# CHECK-ENCODING: encoding: [0xc1,0x7b,0x9d,0x72] + +vfrintrz.s $vr16, $vr17 +# CHECK-INST: vfrintrz.s $vr16, $vr17 +# CHECK-ENCODING: encoding: [0x30,0x66,0x9d,0x72] + +vfrintrz.d $vr1, $vr31 +# CHECK-INST: vfrintrz.d $vr1, $vr31 +# CHECK-ENCODING: encoding: [0xe1,0x6b,0x9d,0x72] + +vfrintrp.s $vr11, $vr2 +# CHECK-INST: vfrintrp.s $vr11, $vr2 +# CHECK-ENCODING: encoding: [0x4b,0x54,0x9d,0x72] + +vfrintrp.d $vr30, $vr16 +# CHECK-INST: vfrintrp.d $vr30, $vr16 +# CHECK-ENCODING: encoding: [0x1e,0x5a,0x9d,0x72] + +vfrintrm.s $vr25, $vr23 +# CHECK-INST: vfrintrm.s $vr25, $vr23 +# CHECK-ENCODING: encoding: [0xf9,0x46,0x9d,0x72] + +vfrintrm.d $vr19, $vr11 +# CHECK-INST: vfrintrm.d $vr19, $vr11 +# CHECK-ENCODING: encoding: [0x73,0x49,0x9d,0x72] + +vfrint.s $vr22, $vr6 +# CHECK-INST: vfrint.s $vr22, $vr6 +# CHECK-ENCODING: encoding: [0xd6,0x34,0x9d,0x72] + +vfrint.d $vr26, $vr9 +# CHECK-INST: vfrint.d $vr26, $vr9 +# CHECK-ENCODING: encoding: [0x3a,0x39,0x9d,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/frsqrt.s b/llvm/test/MC/LoongArch/lsx/frsqrt.s new file mode 100644 index 0000000000000..68b0cc091b8ae --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/frsqrt.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfrsqrt.s $vr19, $vr30 +# CHECK-INST: vfrsqrt.s $vr19, $vr30 +# CHECK-ENCODING: encoding: [0xd3,0x07,0x9d,0x72] + +vfrsqrt.d $vr1, $vr0 +# CHECK-INST: vfrsqrt.d $vr1, $vr0 +# CHECK-ENCODING: encoding: [0x01,0x08,0x9d,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/frstp.s b/llvm/test/MC/LoongArch/lsx/frstp.s new file mode 100644 index 0000000000000..86bb31a1d39d4 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/frstp.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfrstp.b $vr30, $vr25, $vr1 +# CHECK-INST: vfrstp.b $vr30, $vr25, $vr1 +# CHECK-ENCODING: encoding: [0x3e,0x07,0x2b,0x71] + +vfrstp.h $vr22, $vr26, $vr21 +# CHECK-INST: vfrstp.h $vr22, $vr26, $vr21 +# CHECK-ENCODING: encoding: [0x56,0xd7,0x2b,0x71] + +vfrstpi.b $vr12, $vr8, 28 +# CHECK-INST: vfrstpi.b $vr12, $vr8, 28 +# CHECK-ENCODING: encoding: [0x0c,0x71,0x9a,0x72] + +vfrstpi.h $vr5, $vr28, 29 +# CHECK-INST: vfrstpi.h $vr5, $vr28, 29 +# CHECK-ENCODING: encoding: [0x85,0xf7,0x9a,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/fsqrt.s b/llvm/test/MC/LoongArch/lsx/fsqrt.s new file mode 100644 index 0000000000000..a5df2416dfc3d --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fsqrt.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfsqrt.s $vr0, $vr3 +# CHECK-INST: vfsqrt.s $vr0, $vr3 +# CHECK-ENCODING: encoding: [0x60,0xe4,0x9c,0x72] + +vfsqrt.d $vr26, $vr9 +# CHECK-INST: vfsqrt.d $vr26, $vr9 +# CHECK-ENCODING: encoding: [0x3a,0xe9,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/fsub.s b/llvm/test/MC/LoongArch/lsx/fsub.s new file mode 100644 index 0000000000000..30c3636312951 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/fsub.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vfsub.s $vr4, $vr9, $vr12 +# CHECK-INST: vfsub.s $vr4, $vr9, $vr12 +# CHECK-ENCODING: encoding: [0x24,0xb1,0x32,0x71] + +vfsub.d $vr12, $vr28, $vr27 +# CHECK-INST: vfsub.d $vr12, $vr28, $vr27 +# CHECK-ENCODING: encoding: [0x8c,0x6f,0x33,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ftint.s b/llvm/test/MC/LoongArch/lsx/ftint.s new file mode 100644 index 0000000000000..9a50fddf81e58 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ftint.s @@ -0,0 +1,120 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vftintrne.w.s $vr25, $vr28 +# CHECK-INST: vftintrne.w.s $vr25, $vr28 +# CHECK-ENCODING: encoding: [0x99,0x53,0x9e,0x72] + +vftintrne.l.d $vr26, $vr27 +# CHECK-INST: vftintrne.l.d $vr26, $vr27 +# CHECK-ENCODING: encoding: [0x7a,0x57,0x9e,0x72] + +vftintrz.w.s $vr24, $vr29 +# CHECK-INST: vftintrz.w.s $vr24, $vr29 +# CHECK-ENCODING: encoding: [0xb8,0x4b,0x9e,0x72] + +vftintrz.l.d $vr17, $vr12 +# CHECK-INST: vftintrz.l.d $vr17, $vr12 +# CHECK-ENCODING: encoding: [0x91,0x4d,0x9e,0x72] + +vftintrp.w.s $vr1, $vr6 +# CHECK-INST: vftintrp.w.s $vr1, $vr6 +# CHECK-ENCODING: encoding: [0xc1,0x40,0x9e,0x72] + +vftintrp.l.d $vr8, $vr26 +# CHECK-INST: vftintrp.l.d $vr8, $vr26 +# CHECK-ENCODING: encoding: [0x48,0x47,0x9e,0x72] + +vftintrm.w.s $vr4, $vr30 +# CHECK-INST: vftintrm.w.s $vr4, $vr30 +# CHECK-ENCODING: encoding: [0xc4,0x3b,0x9e,0x72] + +vftintrm.l.d $vr18, $vr0 +# CHECK-INST: vftintrm.l.d $vr18, $vr0 +# CHECK-ENCODING: encoding: [0x12,0x3c,0x9e,0x72] + +vftint.w.s $vr0, $vr27 +# CHECK-INST: vftint.w.s $vr0, $vr27 +# CHECK-ENCODING: encoding: [0x60,0x33,0x9e,0x72] + +vftint.l.d $vr21, $vr22 +# CHECK-INST: vftint.l.d $vr21, $vr22 +# CHECK-ENCODING: encoding: [0xd5,0x36,0x9e,0x72] + +vftintrz.wu.s $vr8, $vr3 +# CHECK-INST: vftintrz.wu.s $vr8, $vr3 +# CHECK-ENCODING: encoding: [0x68,0x70,0x9e,0x72] + +vftintrz.lu.d $vr25, $vr9 +# CHECK-INST: vftintrz.lu.d $vr25, $vr9 +# CHECK-ENCODING: encoding: [0x39,0x75,0x9e,0x72] + +vftint.wu.s $vr8, $vr8 +# CHECK-INST: vftint.wu.s $vr8, $vr8 +# CHECK-ENCODING: encoding: [0x08,0x59,0x9e,0x72] + +vftint.lu.d $vr1, $vr17 +# CHECK-INST: vftint.lu.d $vr1, $vr17 +# CHECK-ENCODING: encoding: [0x21,0x5e,0x9e,0x72] + +vftintrne.w.d $vr4, $vr18, $vr18 +# CHECK-INST: vftintrne.w.d $vr4, $vr18, $vr18 +# CHECK-ENCODING: encoding: [0x44,0xca,0x4b,0x71] + +vftintrz.w.d $vr26, $vr18, $vr4 +# CHECK-INST: vftintrz.w.d $vr26, $vr18, $vr4 +# CHECK-ENCODING: encoding: [0x5a,0x12,0x4b,0x71] + +vftintrp.w.d $vr25, $vr0, $vr23 +# CHECK-INST: vftintrp.w.d $vr25, $vr0, $vr23 +# CHECK-ENCODING: encoding: [0x19,0xdc,0x4a,0x71] + +vftintrm.w.d $vr30, $vr25, $vr5 +# CHECK-INST: vftintrm.w.d $vr30, $vr25, $vr5 +# CHECK-ENCODING: encoding: [0x3e,0x17,0x4a,0x71] + +vftint.w.d $vr27, $vr28, $vr6 +# CHECK-INST: vftint.w.d $vr27, $vr28, $vr6 +# CHECK-ENCODING: encoding: [0x9b,0x9b,0x49,0x71] + +vftintrnel.l.s $vr7, $vr8 +# CHECK-INST: vftintrnel.l.s $vr7, $vr8 +# CHECK-ENCODING: encoding: [0x07,0xa1,0x9e,0x72] + +vftintrneh.l.s $vr21, $vr26 +# CHECK-INST: vftintrneh.l.s $vr21, $vr26 +# CHECK-ENCODING: encoding: [0x55,0xa7,0x9e,0x72] + +vftintrzl.l.s $vr21, $vr18 +# CHECK-INST: vftintrzl.l.s $vr21, $vr18 +# CHECK-ENCODING: encoding: [0x55,0x9a,0x9e,0x72] + +vftintrzh.l.s $vr22, $vr16 +# CHECK-INST: vftintrzh.l.s $vr22, $vr16 +# CHECK-ENCODING: encoding: [0x16,0x9e,0x9e,0x72] + +vftintrpl.l.s $vr25, $vr19 +# CHECK-INST: vftintrpl.l.s $vr25, $vr19 +# CHECK-ENCODING: encoding: [0x79,0x92,0x9e,0x72] + +vftintrph.l.s $vr11, $vr22 +# CHECK-INST: vftintrph.l.s $vr11, $vr22 +# CHECK-ENCODING: encoding: [0xcb,0x96,0x9e,0x72] + +vftintrml.l.s $vr6, $vr28 +# CHECK-INST: vftintrml.l.s $vr6, $vr28 +# CHECK-ENCODING: encoding: [0x86,0x8b,0x9e,0x72] + +vftintrmh.l.s $vr17, $vr11 +# CHECK-INST: vftintrmh.l.s $vr17, $vr11 +# CHECK-ENCODING: encoding: [0x71,0x8d,0x9e,0x72] + +vftintl.l.s $vr3, $vr28 +# CHECK-INST: vftintl.l.s $vr3, $vr28 +# CHECK-ENCODING: encoding: [0x83,0x83,0x9e,0x72] + +vftinth.l.s $vr11, $vr30 +# CHECK-INST: vftinth.l.s $vr11, $vr30 +# CHECK-ENCODING: encoding: [0xcb,0x87,0x9e,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/haddw.s b/llvm/test/MC/LoongArch/lsx/haddw.s new file mode 100644 index 0000000000000..1958941fa90f6 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/haddw.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vhaddw.h.b $vr3, $vr14, $vr11 +# CHECK-INST: vhaddw.h.b $vr3, $vr14, $vr11 +# CHECK-ENCODING: encoding: [0xc3,0x2d,0x54,0x70] + +vhaddw.w.h $vr3, $vr9, $vr9 +# CHECK-INST: vhaddw.w.h $vr3, $vr9, $vr9 +# CHECK-ENCODING: encoding: [0x23,0xa5,0x54,0x70] + +vhaddw.d.w $vr7, $vr26, $vr6 +# CHECK-INST: vhaddw.d.w $vr7, $vr26, $vr6 +# CHECK-ENCODING: encoding: [0x47,0x1b,0x55,0x70] + +vhaddw.q.d $vr22, $vr25, $vr19 +# CHECK-INST: vhaddw.q.d $vr22, $vr25, $vr19 +# CHECK-ENCODING: encoding: [0x36,0xcf,0x55,0x70] + +vhaddw.hu.bu $vr8, $vr21, $vr21 +# CHECK-INST: vhaddw.hu.bu $vr8, $vr21, $vr21 +# CHECK-ENCODING: encoding: [0xa8,0x56,0x58,0x70] + +vhaddw.wu.hu $vr23, $vr23, $vr20 +# CHECK-INST: vhaddw.wu.hu $vr23, $vr23, $vr20 +# CHECK-ENCODING: encoding: [0xf7,0xd2,0x58,0x70] + +vhaddw.du.wu $vr13, $vr7, $vr6 +# CHECK-INST: vhaddw.du.wu $vr13, $vr7, $vr6 +# CHECK-ENCODING: encoding: [0xed,0x18,0x59,0x70] + +vhaddw.qu.du $vr19, $vr12, $vr6 +# CHECK-INST: vhaddw.qu.du $vr19, $vr12, $vr6 +# CHECK-ENCODING: encoding: [0x93,0x99,0x59,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/hsubw.s b/llvm/test/MC/LoongArch/lsx/hsubw.s new file mode 100644 index 0000000000000..933f5840b8c63 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/hsubw.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vhsubw.h.b $vr24, $vr26, $vr16 +# CHECK-INST: vhsubw.h.b $vr24, $vr26, $vr16 +# CHECK-ENCODING: encoding: [0x58,0x43,0x56,0x70] + +vhsubw.w.h $vr5, $vr28, $vr12 +# CHECK-INST: vhsubw.w.h $vr5, $vr28, $vr12 +# CHECK-ENCODING: encoding: [0x85,0xb3,0x56,0x70] + +vhsubw.d.w $vr8, $vr5, $vr22 +# CHECK-INST: vhsubw.d.w $vr8, $vr5, $vr22 +# CHECK-ENCODING: encoding: [0xa8,0x58,0x57,0x70] + +vhsubw.q.d $vr21, $vr16, $vr14 +# CHECK-INST: vhsubw.q.d $vr21, $vr16, $vr14 +# CHECK-ENCODING: encoding: [0x15,0xba,0x57,0x70] + +vhsubw.hu.bu $vr12, $vr31, $vr30 +# CHECK-INST: vhsubw.hu.bu $vr12, $vr31, $vr30 +# CHECK-ENCODING: encoding: [0xec,0x7b,0x5a,0x70] + +vhsubw.wu.hu $vr18, $vr13, $vr31 +# CHECK-INST: vhsubw.wu.hu $vr18, $vr13, $vr31 +# CHECK-ENCODING: encoding: [0xb2,0xfd,0x5a,0x70] + +vhsubw.du.wu $vr0, $vr1, $vr2 +# CHECK-INST: vhsubw.du.wu $vr0, $vr1, $vr2 +# CHECK-ENCODING: encoding: [0x20,0x08,0x5b,0x70] + +vhsubw.qu.du $vr30, $vr31, $vr5 +# CHECK-INST: vhsubw.qu.du $vr30, $vr31, $vr5 +# CHECK-ENCODING: encoding: [0xfe,0x97,0x5b,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/ilv.s b/llvm/test/MC/LoongArch/lsx/ilv.s new file mode 100644 index 0000000000000..8775e1ce19d3d --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ilv.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vilvl.b $vr9, $vr30, $vr20 +# CHECK-INST: vilvl.b $vr9, $vr30, $vr20 +# CHECK-ENCODING: encoding: [0xc9,0x53,0x1a,0x71] + +vilvl.h $vr6, $vr19, $vr30 +# CHECK-INST: vilvl.h $vr6, $vr19, $vr30 +# CHECK-ENCODING: encoding: [0x66,0xfa,0x1a,0x71] + +vilvl.w $vr18, $vr3, $vr15 +# CHECK-INST: vilvl.w $vr18, $vr3, $vr15 +# CHECK-ENCODING: encoding: [0x72,0x3c,0x1b,0x71] + +vilvl.d $vr20, $vr22, $vr9 +# CHECK-INST: vilvl.d $vr20, $vr22, $vr9 +# CHECK-ENCODING: encoding: [0xd4,0xa6,0x1b,0x71] + +vilvh.b $vr14, $vr4, $vr12 +# CHECK-INST: vilvh.b $vr14, $vr4, $vr12 +# CHECK-ENCODING: encoding: [0x8e,0x30,0x1c,0x71] + +vilvh.h $vr2, $vr0, $vr6 +# CHECK-INST: vilvh.h $vr2, $vr0, $vr6 +# CHECK-ENCODING: encoding: [0x02,0x98,0x1c,0x71] + +vilvh.w $vr7, $vr27, $vr15 +# CHECK-INST: vilvh.w $vr7, $vr27, $vr15 +# CHECK-ENCODING: encoding: [0x67,0x3f,0x1d,0x71] + +vilvh.d $vr9, $vr25, $vr29 +# CHECK-INST: vilvh.d $vr9, $vr25, $vr29 +# CHECK-ENCODING: encoding: [0x29,0xf7,0x1d,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/insgr2vr.s b/llvm/test/MC/LoongArch/lsx/insgr2vr.s new file mode 100644 index 0000000000000..b8b8fe7fb4dfa --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/insgr2vr.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vinsgr2vr.b $vr23, $r20, 2 +# CHECK-INST: vinsgr2vr.b $vr23, $t8, 2 +# CHECK-ENCODING: encoding: [0x97,0x8a,0xeb,0x72] + +vinsgr2vr.h $vr7, $r5, 7 +# CHECK-INST: vinsgr2vr.h $vr7, $a1, 7 +# CHECK-ENCODING: encoding: [0xa7,0xdc,0xeb,0x72] + +vinsgr2vr.w $vr8, $r6, 2 +# CHECK-INST: vinsgr2vr.w $vr8, $a2, 2 +# CHECK-ENCODING: encoding: [0xc8,0xe8,0xeb,0x72] + +vinsgr2vr.d $vr17, $r24, 1 +# CHECK-INST: vinsgr2vr.d $vr17, $s1, 1 +# CHECK-ENCODING: encoding: [0x11,0xf7,0xeb,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/invalid-imm.s b/llvm/test/MC/LoongArch/lsx/invalid-imm.s new file mode 100644 index 0000000000000..fb7e24c834881 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/invalid-imm.s @@ -0,0 +1,55 @@ +## Test out of range immediates which are used by lsx instructions. + +# RUN: not llvm-mc --triple=loongarch64 %s 2>&1 | FileCheck %s + +## uimm1 +vreplvei.d $vr0, $vr1, 2 +# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 1] + +## uimm4 +vsat.h $vr0, $vr1, 16 +# CHECK: :[[#@LINE-1]]:20: error: immediate must be an integer in the range [0, 15] + +## simm5 +vseqi.b $vr0, $vr1, 16 +# CHECK: :[[#@LINE-1]]:21: error: immediate must be an integer in the range [-16, 15] + +## uimm7 +vsrlni.d.q $vr0, $vr1, 128 +# CHECK: :[[#@LINE-1]]:24: error: immediate must be an integer in the range [0, 127] + +## simm8 +vpermi.w $vr0, $vr1, 256 +# CHECK: :[[#@LINE-1]]:22: error: immediate must be an integer in the range [0, 255] + +## simm8_lsl1 +vstelm.h $vr0, $a0, 255, 1 +# CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 2 in the range [-256, 254] + +## simm8_lsl2 +vstelm.w $vr0, $a0, 512, 1 +# CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 4 in the range [-512, 508] + +## simm10 +vrepli.b $vr0, 512 +# CHECK: :[[#@LINE-1]]:16: error: immediate must be an integer in the range [-512, 511] + +## simm8_lsl3 +vstelm.d $vr0, $a0, 1024, 1 +# CHECK: :[[#@LINE-1]]:21: error: immediate must be a multiple of 8 in the range [-1024, 1016] + +## simm9_lsl3 +vldrepl.d $vr0, $a0, 2048 +# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 8 in the range [-2048, 2040] + +## simm10_lsl2 +vldrepl.w $vr0, $a0, 2048 +# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 4 in the range [-2048, 2044] + +## simm11_lsl1 +vldrepl.h $vr0, $a0, 2048 +# CHECK: :[[#@LINE-1]]:22: error: immediate must be a multiple of 2 in the range [-2048, 2046] + +## simm13 +vldi $vr0, 4096 +# CHECK: :[[#@LINE-1]]:12: error: immediate must be an integer in the range [-4096, 4095] diff --git a/llvm/test/MC/LoongArch/lsx/ld.s b/llvm/test/MC/LoongArch/lsx/ld.s new file mode 100644 index 0000000000000..642c842eb6e81 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ld.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vld $vr0, $r12, -536 +# CHECK-INST: vld $vr0, $t0, -536 +# CHECK-ENCODING: encoding: [0x80,0xa1,0x37,0x2c] + +vldx $vr21, $r14, $r20 +# CHECK-INST: vldx $vr21, $t2, $t8 +# CHECK-ENCODING: encoding: [0xd5,0x51,0x40,0x38] diff --git a/llvm/test/MC/LoongArch/lsx/ldi.s b/llvm/test/MC/LoongArch/lsx/ldi.s new file mode 100644 index 0000000000000..59a1c2b27f4ee --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ldi.s @@ -0,0 +1,29 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-OBJ + +vldi $vr26, -3212 +# CHECK-INST: vldi $vr26, -3212 +# CHECK-ENCODING: encoding: [0x9a,0x6e,0xe2,0x73] +# CHECK-OBJ: vldi $vr26, -3212 + +vrepli.b $vr26, -512 +# CHECK-INST: vrepli.b $vr26, -512 +# CHECK-ENCODING: encoding: [0x1a,0x40,0xe0,0x73] +# CHECK-OBJ: vldi $vr26, 512 + +vrepli.h $vr26, -512 +# CHECK-INST: vrepli.h $vr26, -512 +# CHECK-ENCODING: encoding: [0x1a,0xc0,0xe0,0x73] +# CHECK-OBJ: vldi $vr26, 1536 + +vrepli.w $vr26, -512 +# CHECK-INST: vrepli.w $vr26, -512 +# CHECK-ENCODING: encoding: [0x1a,0x40,0xe1,0x73] +# CHECK-OBJ: vldi $vr26, 2560 + +vrepli.d $vr26, -512 +# CHECK-INST: vrepli.d $vr26, -512 +# CHECK-ENCODING: encoding: [0x1a,0xc0,0xe1,0x73] +# CHECK-OBJ: vldi $vr26, 3584 diff --git a/llvm/test/MC/LoongArch/lsx/ldrepl.s b/llvm/test/MC/LoongArch/lsx/ldrepl.s new file mode 100644 index 0000000000000..75830ae20f2a1 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ldrepl.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vldrepl.b $vr3, $r3, -1553 +# CHECK-INST: vldrepl.b $vr3, $sp, -1553 +# CHECK-ENCODING: encoding: [0x63,0xbc,0xa7,0x30] + +vldrepl.h $vr23, $r22, 172 +# CHECK-INST: vldrepl.h $vr23, $fp, 172 +# CHECK-ENCODING: encoding: [0xd7,0x5a,0x41,0x30] + +vldrepl.w $vr12, $r27, -1304 +# CHECK-INST: vldrepl.w $vr12, $s4, -1304 +# CHECK-ENCODING: encoding: [0x6c,0xeb,0x2a,0x30] + +vldrepl.d $vr7, $r31, -1376 +# CHECK-INST: vldrepl.d $vr7, $s8, -1376 +# CHECK-ENCODING: encoding: [0xe7,0x53,0x15,0x30] diff --git a/llvm/test/MC/LoongArch/lsx/madd.s b/llvm/test/MC/LoongArch/lsx/madd.s new file mode 100644 index 0000000000000..9ae6500c2efb6 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/madd.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmadd.b $vr13, $vr5, $vr10 +# CHECK-INST: vmadd.b $vr13, $vr5, $vr10 +# CHECK-ENCODING: encoding: [0xad,0x28,0xa8,0x70] + +vmadd.h $vr11, $vr15, $vr8 +# CHECK-INST: vmadd.h $vr11, $vr15, $vr8 +# CHECK-ENCODING: encoding: [0xeb,0xa1,0xa8,0x70] + +vmadd.w $vr5, $vr17, $vr16 +# CHECK-INST: vmadd.w $vr5, $vr17, $vr16 +# CHECK-ENCODING: encoding: [0x25,0x42,0xa9,0x70] + +vmadd.d $vr29, $vr11, $vr12 +# CHECK-INST: vmadd.d $vr29, $vr11, $vr12 +# CHECK-ENCODING: encoding: [0x7d,0xb1,0xa9,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/maddw.s b/llvm/test/MC/LoongArch/lsx/maddw.s new file mode 100644 index 0000000000000..f346ea7860105 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/maddw.s @@ -0,0 +1,100 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmaddwev.h.b $vr20, $vr27, $vr19 +# CHECK-INST: vmaddwev.h.b $vr20, $vr27, $vr19 +# CHECK-ENCODING: encoding: [0x74,0x4f,0xac,0x70] + +vmaddwev.w.h $vr6, $vr21, $vr19 +# CHECK-INST: vmaddwev.w.h $vr6, $vr21, $vr19 +# CHECK-ENCODING: encoding: [0xa6,0xce,0xac,0x70] + +vmaddwev.d.w $vr9, $vr20, $vr22 +# CHECK-INST: vmaddwev.d.w $vr9, $vr20, $vr22 +# CHECK-ENCODING: encoding: [0x89,0x5a,0xad,0x70] + +vmaddwev.q.d $vr11, $vr22, $vr5 +# CHECK-INST: vmaddwev.q.d $vr11, $vr22, $vr5 +# CHECK-ENCODING: encoding: [0xcb,0x96,0xad,0x70] + +vmaddwev.h.bu $vr7, $vr24, $vr12 +# CHECK-INST: vmaddwev.h.bu $vr7, $vr24, $vr12 +# CHECK-ENCODING: encoding: [0x07,0x33,0xb4,0x70] + +vmaddwev.w.hu $vr14, $vr10, $vr2 +# CHECK-INST: vmaddwev.w.hu $vr14, $vr10, $vr2 +# CHECK-ENCODING: encoding: [0x4e,0x89,0xb4,0x70] + +vmaddwev.d.wu $vr25, $vr22, $vr30 +# CHECK-INST: vmaddwev.d.wu $vr25, $vr22, $vr30 +# CHECK-ENCODING: encoding: [0xd9,0x7a,0xb5,0x70] + +vmaddwev.q.du $vr4, $vr5, $vr10 +# CHECK-INST: vmaddwev.q.du $vr4, $vr5, $vr10 +# CHECK-ENCODING: encoding: [0xa4,0xa8,0xb5,0x70] + +vmaddwev.h.bu.b $vr13, $vr17, $vr6 +# CHECK-INST: vmaddwev.h.bu.b $vr13, $vr17, $vr6 +# CHECK-ENCODING: encoding: [0x2d,0x1a,0xbc,0x70] + +vmaddwev.w.hu.h $vr1, $vr29, $vr13 +# CHECK-INST: vmaddwev.w.hu.h $vr1, $vr29, $vr13 +# CHECK-ENCODING: encoding: [0xa1,0xb7,0xbc,0x70] + +vmaddwev.d.wu.w $vr5, $vr13, $vr10 +# CHECK-INST: vmaddwev.d.wu.w $vr5, $vr13, $vr10 +# CHECK-ENCODING: encoding: [0xa5,0x29,0xbd,0x70] + +vmaddwev.q.du.d $vr16, $vr0, $vr26 +# CHECK-INST: vmaddwev.q.du.d $vr16, $vr0, $vr26 +# CHECK-ENCODING: encoding: [0x10,0xe8,0xbd,0x70] + +vmaddwod.h.b $vr29, $vr28, $vr11 +# CHECK-INST: vmaddwod.h.b $vr29, $vr28, $vr11 +# CHECK-ENCODING: encoding: [0x9d,0x2f,0xae,0x70] + +vmaddwod.w.h $vr10, $vr5, $vr29 +# CHECK-INST: vmaddwod.w.h $vr10, $vr5, $vr29 +# CHECK-ENCODING: encoding: [0xaa,0xf4,0xae,0x70] + +vmaddwod.d.w $vr16, $vr7, $vr26 +# CHECK-INST: vmaddwod.d.w $vr16, $vr7, $vr26 +# CHECK-ENCODING: encoding: [0xf0,0x68,0xaf,0x70] + +vmaddwod.q.d $vr1, $vr4, $vr7 +# CHECK-INST: vmaddwod.q.d $vr1, $vr4, $vr7 +# CHECK-ENCODING: encoding: [0x81,0x9c,0xaf,0x70] + +vmaddwod.h.bu $vr9, $vr28, $vr19 +# CHECK-INST: vmaddwod.h.bu $vr9, $vr28, $vr19 +# CHECK-ENCODING: encoding: [0x89,0x4f,0xb6,0x70] + +vmaddwod.w.hu $vr4, $vr6, $vr19 +# CHECK-INST: vmaddwod.w.hu $vr4, $vr6, $vr19 +# CHECK-ENCODING: encoding: [0xc4,0xcc,0xb6,0x70] + +vmaddwod.d.wu $vr2, $vr26, $vr26 +# CHECK-INST: vmaddwod.d.wu $vr2, $vr26, $vr26 +# CHECK-ENCODING: encoding: [0x42,0x6b,0xb7,0x70] + +vmaddwod.q.du $vr9, $vr18, $vr31 +# CHECK-INST: vmaddwod.q.du $vr9, $vr18, $vr31 +# CHECK-ENCODING: encoding: [0x49,0xfe,0xb7,0x70] + +vmaddwod.h.bu.b $vr22, $vr3, $vr25 +# CHECK-INST: vmaddwod.h.bu.b $vr22, $vr3, $vr25 +# CHECK-ENCODING: encoding: [0x76,0x64,0xbe,0x70] + +vmaddwod.w.hu.h $vr17, $vr20, $vr22 +# CHECK-INST: vmaddwod.w.hu.h $vr17, $vr20, $vr22 +# CHECK-ENCODING: encoding: [0x91,0xda,0xbe,0x70] + +vmaddwod.d.wu.w $vr21, $vr14, $vr6 +# CHECK-INST: vmaddwod.d.wu.w $vr21, $vr14, $vr6 +# CHECK-ENCODING: encoding: [0xd5,0x19,0xbf,0x70] + +vmaddwod.q.du.d $vr8, $vr15, $vr11 +# CHECK-INST: vmaddwod.q.du.d $vr8, $vr15, $vr11 +# CHECK-ENCODING: encoding: [0xe8,0xad,0xbf,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/max.s b/llvm/test/MC/LoongArch/lsx/max.s new file mode 100644 index 0000000000000..2761f6913a86b --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/max.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmax.b $vr6, $vr21, $vr16 +# CHECK-INST: vmax.b $vr6, $vr21, $vr16 +# CHECK-ENCODING: encoding: [0xa6,0x42,0x70,0x70] + +vmax.h $vr9, $vr28, $vr16 +# CHECK-INST: vmax.h $vr9, $vr28, $vr16 +# CHECK-ENCODING: encoding: [0x89,0xc3,0x70,0x70] + +vmax.w $vr6, $vr0, $vr9 +# CHECK-INST: vmax.w $vr6, $vr0, $vr9 +# CHECK-ENCODING: encoding: [0x06,0x24,0x71,0x70] + +vmax.d $vr26, $vr3, $vr0 +# CHECK-INST: vmax.d $vr26, $vr3, $vr0 +# CHECK-ENCODING: encoding: [0x7a,0x80,0x71,0x70] + +vmaxi.b $vr2, $vr21, -8 +# CHECK-INST: vmaxi.b $vr2, $vr21, -8 +# CHECK-ENCODING: encoding: [0xa2,0x62,0x90,0x72] + +vmaxi.h $vr2, $vr21, -2 +# CHECK-INST: vmaxi.h $vr2, $vr21, -2 +# CHECK-ENCODING: encoding: [0xa2,0xfa,0x90,0x72] + +vmaxi.w $vr26, $vr21, -9 +# CHECK-INST: vmaxi.w $vr26, $vr21, -9 +# CHECK-ENCODING: encoding: [0xba,0x5e,0x91,0x72] + +vmaxi.d $vr30, $vr28, -2 +# CHECK-INST: vmaxi.d $vr30, $vr28, -2 +# CHECK-ENCODING: encoding: [0x9e,0xfb,0x91,0x72] + +vmax.bu $vr8, $vr7, $vr7 +# CHECK-INST: vmax.bu $vr8, $vr7, $vr7 +# CHECK-ENCODING: encoding: [0xe8,0x1c,0x74,0x70] + +vmax.hu $vr21, $vr10, $vr11 +# CHECK-INST: vmax.hu $vr21, $vr10, $vr11 +# CHECK-ENCODING: encoding: [0x55,0xad,0x74,0x70] + +vmax.wu $vr24, $vr13, $vr25 +# CHECK-INST: vmax.wu $vr24, $vr13, $vr25 +# CHECK-ENCODING: encoding: [0xb8,0x65,0x75,0x70] + +vmax.du $vr23, $vr11, $vr14 +# CHECK-INST: vmax.du $vr23, $vr11, $vr14 +# CHECK-ENCODING: encoding: [0x77,0xb9,0x75,0x70] + +vmaxi.bu $vr2, $vr9, 18 +# CHECK-INST: vmaxi.bu $vr2, $vr9, 18 +# CHECK-ENCODING: encoding: [0x22,0x49,0x94,0x72] + +vmaxi.hu $vr11, $vr23, 18 +# CHECK-INST: vmaxi.hu $vr11, $vr23, 18 +# CHECK-ENCODING: encoding: [0xeb,0xca,0x94,0x72] + +vmaxi.wu $vr15, $vr0, 29 +# CHECK-INST: vmaxi.wu $vr15, $vr0, 29 +# CHECK-ENCODING: encoding: [0x0f,0x74,0x95,0x72] + +vmaxi.du $vr20, $vr1, 14 +# CHECK-INST: vmaxi.du $vr20, $vr1, 14 +# CHECK-ENCODING: encoding: [0x34,0xb8,0x95,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/min.s b/llvm/test/MC/LoongArch/lsx/min.s new file mode 100644 index 0000000000000..7843f95ea80e9 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/min.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmin.b $vr24, $vr31, $vr5 +# CHECK-INST: vmin.b $vr24, $vr31, $vr5 +# CHECK-ENCODING: encoding: [0xf8,0x17,0x72,0x70] + +vmin.h $vr8, $vr17, $vr29 +# CHECK-INST: vmin.h $vr8, $vr17, $vr29 +# CHECK-ENCODING: encoding: [0x28,0xf6,0x72,0x70] + +vmin.w $vr6, $vr31, $vr20 +# CHECK-INST: vmin.w $vr6, $vr31, $vr20 +# CHECK-ENCODING: encoding: [0xe6,0x53,0x73,0x70] + +vmin.d $vr5, $vr11, $vr14 +# CHECK-INST: vmin.d $vr5, $vr11, $vr14 +# CHECK-ENCODING: encoding: [0x65,0xb9,0x73,0x70] + +vmini.b $vr8, $vr28, 0 +# CHECK-INST: vmini.b $vr8, $vr28, 0 +# CHECK-ENCODING: encoding: [0x88,0x03,0x92,0x72] + +vmini.h $vr12, $vr12, 0 +# CHECK-INST: vmini.h $vr12, $vr12, 0 +# CHECK-ENCODING: encoding: [0x8c,0x81,0x92,0x72] + +vmini.w $vr17, $vr1, 4 +# CHECK-INST: vmini.w $vr17, $vr1, 4 +# CHECK-ENCODING: encoding: [0x31,0x10,0x93,0x72] + +vmini.d $vr13, $vr2, -14 +# CHECK-INST: vmini.d $vr13, $vr2, -14 +# CHECK-ENCODING: encoding: [0x4d,0xc8,0x93,0x72] + +vmin.bu $vr30, $vr13, $vr11 +# CHECK-INST: vmin.bu $vr30, $vr13, $vr11 +# CHECK-ENCODING: encoding: [0xbe,0x2d,0x76,0x70] + +vmin.hu $vr13, $vr10, $vr17 +# CHECK-INST: vmin.hu $vr13, $vr10, $vr17 +# CHECK-ENCODING: encoding: [0x4d,0xc5,0x76,0x70] + +vmin.wu $vr29, $vr10, $vr27 +# CHECK-INST: vmin.wu $vr29, $vr10, $vr27 +# CHECK-ENCODING: encoding: [0x5d,0x6d,0x77,0x70] + +vmin.du $vr8, $vr1, $vr16 +# CHECK-INST: vmin.du $vr8, $vr1, $vr16 +# CHECK-ENCODING: encoding: [0x28,0xc0,0x77,0x70] + +vmini.bu $vr16, $vr22, 4 +# CHECK-INST: vmini.bu $vr16, $vr22, 4 +# CHECK-ENCODING: encoding: [0xd0,0x12,0x96,0x72] + +vmini.hu $vr1, $vr24, 20 +# CHECK-INST: vmini.hu $vr1, $vr24, 20 +# CHECK-ENCODING: encoding: [0x01,0xd3,0x96,0x72] + +vmini.wu $vr15, $vr5, 9 +# CHECK-INST: vmini.wu $vr15, $vr5, 9 +# CHECK-ENCODING: encoding: [0xaf,0x24,0x97,0x72] + +vmini.du $vr31, $vr8, 25 +# CHECK-INST: vmini.du $vr31, $vr8, 25 +# CHECK-ENCODING: encoding: [0x1f,0xe5,0x97,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/mod.s b/llvm/test/MC/LoongArch/lsx/mod.s new file mode 100644 index 0000000000000..1033e8056d295 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/mod.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmod.b $vr28, $vr30, $vr25 +# CHECK-INST: vmod.b $vr28, $vr30, $vr25 +# CHECK-ENCODING: encoding: [0xdc,0x67,0xe2,0x70] + +vmod.h $vr18, $vr31, $vr26 +# CHECK-INST: vmod.h $vr18, $vr31, $vr26 +# CHECK-ENCODING: encoding: [0xf2,0xeb,0xe2,0x70] + +vmod.w $vr16, $vr20, $vr1 +# CHECK-INST: vmod.w $vr16, $vr20, $vr1 +# CHECK-ENCODING: encoding: [0x90,0x06,0xe3,0x70] + +vmod.d $vr26, $vr27, $vr13 +# CHECK-INST: vmod.d $vr26, $vr27, $vr13 +# CHECK-ENCODING: encoding: [0x7a,0xb7,0xe3,0x70] + +vmod.bu $vr19, $vr8, $vr11 +# CHECK-INST: vmod.bu $vr19, $vr8, $vr11 +# CHECK-ENCODING: encoding: [0x13,0x2d,0xe6,0x70] + +vmod.hu $vr14, $vr21, $vr9 +# CHECK-INST: vmod.hu $vr14, $vr21, $vr9 +# CHECK-ENCODING: encoding: [0xae,0xa6,0xe6,0x70] + +vmod.wu $vr19, $vr0, $vr5 +# CHECK-INST: vmod.wu $vr19, $vr0, $vr5 +# CHECK-ENCODING: encoding: [0x13,0x14,0xe7,0x70] + +vmod.du $vr12, $vr18, $vr31 +# CHECK-INST: vmod.du $vr12, $vr18, $vr31 +# CHECK-ENCODING: encoding: [0x4c,0xfe,0xe7,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/mskgez.s b/llvm/test/MC/LoongArch/lsx/mskgez.s new file mode 100644 index 0000000000000..0112d06e8e258 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/mskgez.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmskgez.b $vr13, $vr0 +# CHECK-INST: vmskgez.b $vr13, $vr0 +# CHECK-ENCODING: encoding: [0x0d,0x50,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/mskltz.s b/llvm/test/MC/LoongArch/lsx/mskltz.s new file mode 100644 index 0000000000000..8f68faad1bf5f --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/mskltz.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmskltz.b $vr17, $vr20 +# CHECK-INST: vmskltz.b $vr17, $vr20 +# CHECK-ENCODING: encoding: [0x91,0x42,0x9c,0x72] + +vmskltz.h $vr23, $vr1 +# CHECK-INST: vmskltz.h $vr23, $vr1 +# CHECK-ENCODING: encoding: [0x37,0x44,0x9c,0x72] + +vmskltz.w $vr3, $vr16 +# CHECK-INST: vmskltz.w $vr3, $vr16 +# CHECK-ENCODING: encoding: [0x03,0x4a,0x9c,0x72] + +vmskltz.d $vr1, $vr26 +# CHECK-INST: vmskltz.d $vr1, $vr26 +# CHECK-ENCODING: encoding: [0x41,0x4f,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/msknz.s b/llvm/test/MC/LoongArch/lsx/msknz.s new file mode 100644 index 0000000000000..3805e8830d398 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/msknz.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmsknz.b $vr20, $vr21 +# CHECK-INST: vmsknz.b $vr20, $vr21 +# CHECK-ENCODING: encoding: [0xb4,0x62,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/msub.s b/llvm/test/MC/LoongArch/lsx/msub.s new file mode 100644 index 0000000000000..f3e7e71533455 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/msub.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmsub.b $vr19, $vr20, $vr12 +# CHECK-INST: vmsub.b $vr19, $vr20, $vr12 +# CHECK-ENCODING: encoding: [0x93,0x32,0xaa,0x70] + +vmsub.h $vr1, $vr9, $vr22 +# CHECK-INST: vmsub.h $vr1, $vr9, $vr22 +# CHECK-ENCODING: encoding: [0x21,0xd9,0xaa,0x70] + +vmsub.w $vr10, $vr2, $vr13 +# CHECK-INST: vmsub.w $vr10, $vr2, $vr13 +# CHECK-ENCODING: encoding: [0x4a,0x34,0xab,0x70] + +vmsub.d $vr28, $vr31, $vr6 +# CHECK-INST: vmsub.d $vr28, $vr31, $vr6 +# CHECK-ENCODING: encoding: [0xfc,0x9b,0xab,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/muh.s b/llvm/test/MC/LoongArch/lsx/muh.s new file mode 100644 index 0000000000000..b206480408bbe --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/muh.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmuh.b $vr23, $vr18, $vr21 +# CHECK-INST: vmuh.b $vr23, $vr18, $vr21 +# CHECK-ENCODING: encoding: [0x57,0x56,0x86,0x70] + +vmuh.h $vr25, $vr18, $vr5 +# CHECK-INST: vmuh.h $vr25, $vr18, $vr5 +# CHECK-ENCODING: encoding: [0x59,0x96,0x86,0x70] + +vmuh.w $vr6, $vr9, $vr14 +# CHECK-INST: vmuh.w $vr6, $vr9, $vr14 +# CHECK-ENCODING: encoding: [0x26,0x39,0x87,0x70] + +vmuh.d $vr31, $vr21, $vr8 +# CHECK-INST: vmuh.d $vr31, $vr21, $vr8 +# CHECK-ENCODING: encoding: [0xbf,0xa2,0x87,0x70] + +vmuh.bu $vr11, $vr26, $vr7 +# CHECK-INST: vmuh.bu $vr11, $vr26, $vr7 +# CHECK-ENCODING: encoding: [0x4b,0x1f,0x88,0x70] + +vmuh.hu $vr27, $vr4, $vr28 +# CHECK-INST: vmuh.hu $vr27, $vr4, $vr28 +# CHECK-ENCODING: encoding: [0x9b,0xf0,0x88,0x70] + +vmuh.wu $vr28, $vr21, $vr28 +# CHECK-INST: vmuh.wu $vr28, $vr21, $vr28 +# CHECK-ENCODING: encoding: [0xbc,0x72,0x89,0x70] + +vmuh.du $vr25, $vr3, $vr4 +# CHECK-INST: vmuh.du $vr25, $vr3, $vr4 +# CHECK-ENCODING: encoding: [0x79,0x90,0x89,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/mul.s b/llvm/test/MC/LoongArch/lsx/mul.s new file mode 100644 index 0000000000000..7ddfc64cc7ea2 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/mul.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmul.b $vr25, $vr30, $vr7 +# CHECK-INST: vmul.b $vr25, $vr30, $vr7 +# CHECK-ENCODING: encoding: [0xd9,0x1f,0x84,0x70] + +vmul.h $vr16, $vr1, $vr26 +# CHECK-INST: vmul.h $vr16, $vr1, $vr26 +# CHECK-ENCODING: encoding: [0x30,0xe8,0x84,0x70] + +vmul.w $vr24, $vr22, $vr29 +# CHECK-INST: vmul.w $vr24, $vr22, $vr29 +# CHECK-ENCODING: encoding: [0xd8,0x76,0x85,0x70] + +vmul.d $vr27, $vr16, $vr25 +# CHECK-INST: vmul.d $vr27, $vr16, $vr25 +# CHECK-ENCODING: encoding: [0x1b,0xe6,0x85,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/mulw.s b/llvm/test/MC/LoongArch/lsx/mulw.s new file mode 100644 index 0000000000000..9228e2e6f3339 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/mulw.s @@ -0,0 +1,100 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vmulwev.h.b $vr5, $vr6, $vr0 +# CHECK-INST: vmulwev.h.b $vr5, $vr6, $vr0 +# CHECK-ENCODING: encoding: [0xc5,0x00,0x90,0x70] + +vmulwev.w.h $vr4, $vr25, $vr2 +# CHECK-INST: vmulwev.w.h $vr4, $vr25, $vr2 +# CHECK-ENCODING: encoding: [0x24,0x8b,0x90,0x70] + +vmulwev.d.w $vr30, $vr28, $vr27 +# CHECK-INST: vmulwev.d.w $vr30, $vr28, $vr27 +# CHECK-ENCODING: encoding: [0x9e,0x6f,0x91,0x70] + +vmulwev.q.d $vr2, $vr1, $vr27 +# CHECK-INST: vmulwev.q.d $vr2, $vr1, $vr27 +# CHECK-ENCODING: encoding: [0x22,0xec,0x91,0x70] + +vmulwev.h.bu $vr10, $vr9, $vr4 +# CHECK-INST: vmulwev.h.bu $vr10, $vr9, $vr4 +# CHECK-ENCODING: encoding: [0x2a,0x11,0x98,0x70] + +vmulwev.w.hu $vr20, $vr31, $vr28 +# CHECK-INST: vmulwev.w.hu $vr20, $vr31, $vr28 +# CHECK-ENCODING: encoding: [0xf4,0xf3,0x98,0x70] + +vmulwev.d.wu $vr4, $vr6, $vr21 +# CHECK-INST: vmulwev.d.wu $vr4, $vr6, $vr21 +# CHECK-ENCODING: encoding: [0xc4,0x54,0x99,0x70] + +vmulwev.q.du $vr15, $vr21, $vr30 +# CHECK-INST: vmulwev.q.du $vr15, $vr21, $vr30 +# CHECK-ENCODING: encoding: [0xaf,0xfa,0x99,0x70] + +vmulwev.h.bu.b $vr29, $vr24, $vr15 +# CHECK-INST: vmulwev.h.bu.b $vr29, $vr24, $vr15 +# CHECK-ENCODING: encoding: [0x1d,0x3f,0xa0,0x70] + +vmulwev.w.hu.h $vr2, $vr28, $vr31 +# CHECK-INST: vmulwev.w.hu.h $vr2, $vr28, $vr31 +# CHECK-ENCODING: encoding: [0x82,0xff,0xa0,0x70] + +vmulwev.d.wu.w $vr12, $vr23, $vr6 +# CHECK-INST: vmulwev.d.wu.w $vr12, $vr23, $vr6 +# CHECK-ENCODING: encoding: [0xec,0x1a,0xa1,0x70] + +vmulwev.q.du.d $vr17, $vr9, $vr13 +# CHECK-INST: vmulwev.q.du.d $vr17, $vr9, $vr13 +# CHECK-ENCODING: encoding: [0x31,0xb5,0xa1,0x70] + +vmulwod.h.b $vr17, $vr0, $vr16 +# CHECK-INST: vmulwod.h.b $vr17, $vr0, $vr16 +# CHECK-ENCODING: encoding: [0x11,0x40,0x92,0x70] + +vmulwod.w.h $vr29, $vr5, $vr20 +# CHECK-INST: vmulwod.w.h $vr29, $vr5, $vr20 +# CHECK-ENCODING: encoding: [0xbd,0xd0,0x92,0x70] + +vmulwod.d.w $vr7, $vr26, $vr6 +# CHECK-INST: vmulwod.d.w $vr7, $vr26, $vr6 +# CHECK-ENCODING: encoding: [0x47,0x1b,0x93,0x70] + +vmulwod.q.d $vr13, $vr25, $vr30 +# CHECK-INST: vmulwod.q.d $vr13, $vr25, $vr30 +# CHECK-ENCODING: encoding: [0x2d,0xfb,0x93,0x70] + +vmulwod.h.bu $vr29, $vr20, $vr10 +# CHECK-INST: vmulwod.h.bu $vr29, $vr20, $vr10 +# CHECK-ENCODING: encoding: [0x9d,0x2a,0x9a,0x70] + +vmulwod.w.hu $vr31, $vr4, $vr25 +# CHECK-INST: vmulwod.w.hu $vr31, $vr4, $vr25 +# CHECK-ENCODING: encoding: [0x9f,0xe4,0x9a,0x70] + +vmulwod.d.wu $vr7, $vr26, $vr16 +# CHECK-INST: vmulwod.d.wu $vr7, $vr26, $vr16 +# CHECK-ENCODING: encoding: [0x47,0x43,0x9b,0x70] + +vmulwod.q.du $vr25, $vr10, $vr4 +# CHECK-INST: vmulwod.q.du $vr25, $vr10, $vr4 +# CHECK-ENCODING: encoding: [0x59,0x91,0x9b,0x70] + +vmulwod.h.bu.b $vr6, $vr25, $vr11 +# CHECK-INST: vmulwod.h.bu.b $vr6, $vr25, $vr11 +# CHECK-ENCODING: encoding: [0x26,0x2f,0xa2,0x70] + +vmulwod.w.hu.h $vr18, $vr25, $vr31 +# CHECK-INST: vmulwod.w.hu.h $vr18, $vr25, $vr31 +# CHECK-ENCODING: encoding: [0x32,0xff,0xa2,0x70] + +vmulwod.d.wu.w $vr10, $vr28, $vr26 +# CHECK-INST: vmulwod.d.wu.w $vr10, $vr28, $vr26 +# CHECK-ENCODING: encoding: [0x8a,0x6b,0xa3,0x70] + +vmulwod.q.du.d $vr30, $vr23, $vr17 +# CHECK-INST: vmulwod.q.du.d $vr30, $vr23, $vr17 +# CHECK-ENCODING: encoding: [0xfe,0xc6,0xa3,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/neg.s b/llvm/test/MC/LoongArch/lsx/neg.s new file mode 100644 index 0000000000000..34a6d97512631 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/neg.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vneg.b $vr11, $vr29 +# CHECK-INST: vneg.b $vr11, $vr29 +# CHECK-ENCODING: encoding: [0xab,0x33,0x9c,0x72] + +vneg.h $vr14, $vr4 +# CHECK-INST: vneg.h $vr14, $vr4 +# CHECK-ENCODING: encoding: [0x8e,0x34,0x9c,0x72] + +vneg.w $vr4, $vr0 +# CHECK-INST: vneg.w $vr4, $vr0 +# CHECK-ENCODING: encoding: [0x04,0x38,0x9c,0x72] + +vneg.d $vr0, $vr5 +# CHECK-INST: vneg.d $vr0, $vr5 +# CHECK-ENCODING: encoding: [0xa0,0x3c,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/nor.s b/llvm/test/MC/LoongArch/lsx/nor.s new file mode 100644 index 0000000000000..a74074f09f6c9 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/nor.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vnor.v $vr18, $vr5, $vr29 +# CHECK-INST: vnor.v $vr18, $vr5, $vr29 +# CHECK-ENCODING: encoding: [0xb2,0xf4,0x27,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/nori.s b/llvm/test/MC/LoongArch/lsx/nori.s new file mode 100644 index 0000000000000..7693568df0e87 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/nori.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vnori.b $vr8, $vr16, 186 +# CHECK-INST: vnori.b $vr8, $vr16, 186 +# CHECK-ENCODING: encoding: [0x08,0xea,0xde,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/or.s b/llvm/test/MC/LoongArch/lsx/or.s new file mode 100644 index 0000000000000..c349eac2a9ce6 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/or.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vor.v $vr9, $vr18, $vr24 +# CHECK-INST: vor.v $vr9, $vr18, $vr24 +# CHECK-ENCODING: encoding: [0x49,0xe2,0x26,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ori.s b/llvm/test/MC/LoongArch/lsx/ori.s new file mode 100644 index 0000000000000..def8fbb9c91ed --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ori.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vori.b $vr23, $vr3, 252 +# CHECK-INST: vori.b $vr23, $vr3, 252 +# CHECK-ENCODING: encoding: [0x77,0xf0,0xd7,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/orn.s b/llvm/test/MC/LoongArch/lsx/orn.s new file mode 100644 index 0000000000000..60864e9a30bee --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/orn.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vorn.v $vr11, $vr20, $vr17 +# CHECK-INST: vorn.v $vr11, $vr20, $vr17 +# CHECK-ENCODING: encoding: [0x8b,0xc6,0x28,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/pack.s b/llvm/test/MC/LoongArch/lsx/pack.s new file mode 100644 index 0000000000000..4d9b8b3f2a0d2 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/pack.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vpackev.b $vr1, $vr27, $vr16 +# CHECK-INST: vpackev.b $vr1, $vr27, $vr16 +# CHECK-ENCODING: encoding: [0x61,0x43,0x16,0x71] + +vpackev.h $vr0, $vr3, $vr25 +# CHECK-INST: vpackev.h $vr0, $vr3, $vr25 +# CHECK-ENCODING: encoding: [0x60,0xe4,0x16,0x71] + +vpackev.w $vr10, $vr4, $vr29 +# CHECK-INST: vpackev.w $vr10, $vr4, $vr29 +# CHECK-ENCODING: encoding: [0x8a,0x74,0x17,0x71] + +vpackev.d $vr28, $vr6, $vr7 +# CHECK-INST: vpackev.d $vr28, $vr6, $vr7 +# CHECK-ENCODING: encoding: [0xdc,0x9c,0x17,0x71] + +vpackod.b $vr14, $vr13, $vr7 +# CHECK-INST: vpackod.b $vr14, $vr13, $vr7 +# CHECK-ENCODING: encoding: [0xae,0x1d,0x18,0x71] + +vpackod.h $vr28, $vr5, $vr7 +# CHECK-INST: vpackod.h $vr28, $vr5, $vr7 +# CHECK-ENCODING: encoding: [0xbc,0x9c,0x18,0x71] + +vpackod.w $vr15, $vr11, $vr17 +# CHECK-INST: vpackod.w $vr15, $vr11, $vr17 +# CHECK-ENCODING: encoding: [0x6f,0x45,0x19,0x71] + +vpackod.d $vr12, $vr15, $vr0 +# CHECK-INST: vpackod.d $vr12, $vr15, $vr0 +# CHECK-ENCODING: encoding: [0xec,0x81,0x19,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/pcnt.s b/llvm/test/MC/LoongArch/lsx/pcnt.s new file mode 100644 index 0000000000000..ee896aee8067b --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/pcnt.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vpcnt.b $vr2, $vr7 +# CHECK-INST: vpcnt.b $vr2, $vr7 +# CHECK-ENCODING: encoding: [0xe2,0x20,0x9c,0x72] + +vpcnt.h $vr23, $vr25 +# CHECK-INST: vpcnt.h $vr23, $vr25 +# CHECK-ENCODING: encoding: [0x37,0x27,0x9c,0x72] + +vpcnt.w $vr17, $vr24 +# CHECK-INST: vpcnt.w $vr17, $vr24 +# CHECK-ENCODING: encoding: [0x11,0x2b,0x9c,0x72] + +vpcnt.d $vr4, $vr13 +# CHECK-INST: vpcnt.d $vr4, $vr13 +# CHECK-ENCODING: encoding: [0xa4,0x2d,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/permi.s b/llvm/test/MC/LoongArch/lsx/permi.s new file mode 100644 index 0000000000000..3b4e1a55449b8 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/permi.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vpermi.w $vr2, $vr22, 219 +# CHECK-INST: vpermi.w $vr2, $vr22, 219 +# CHECK-ENCODING: encoding: [0xc2,0x6e,0xe7,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/pick.s b/llvm/test/MC/LoongArch/lsx/pick.s new file mode 100644 index 0000000000000..f54c6226f5a08 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/pick.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vpickev.b $vr8, $vr13, $vr23 +# CHECK-INST: vpickev.b $vr8, $vr13, $vr23 +# CHECK-ENCODING: encoding: [0xa8,0x5d,0x1e,0x71] + +vpickev.h $vr11, $vr18, $vr19 +# CHECK-INST: vpickev.h $vr11, $vr18, $vr19 +# CHECK-ENCODING: encoding: [0x4b,0xce,0x1e,0x71] + +vpickev.w $vr16, $vr31, $vr30 +# CHECK-INST: vpickev.w $vr16, $vr31, $vr30 +# CHECK-ENCODING: encoding: [0xf0,0x7b,0x1f,0x71] + +vpickev.d $vr1, $vr28, $vr8 +# CHECK-INST: vpickev.d $vr1, $vr28, $vr8 +# CHECK-ENCODING: encoding: [0x81,0xa3,0x1f,0x71] + +vpickod.b $vr29, $vr28, $vr28 +# CHECK-INST: vpickod.b $vr29, $vr28, $vr28 +# CHECK-ENCODING: encoding: [0x9d,0x73,0x20,0x71] + +vpickod.h $vr5, $vr5, $vr1 +# CHECK-INST: vpickod.h $vr5, $vr5, $vr1 +# CHECK-ENCODING: encoding: [0xa5,0x84,0x20,0x71] + +vpickod.w $vr18, $vr8, $vr22 +# CHECK-INST: vpickod.w $vr18, $vr8, $vr22 +# CHECK-ENCODING: encoding: [0x12,0x59,0x21,0x71] + +vpickod.d $vr5, $vr5, $vr22 +# CHECK-INST: vpickod.d $vr5, $vr5, $vr22 +# CHECK-ENCODING: encoding: [0xa5,0xd8,0x21,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/pickve2gr.s b/llvm/test/MC/LoongArch/lsx/pickve2gr.s new file mode 100644 index 0000000000000..7a28e8104f028 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/pickve2gr.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vpickve2gr.b $r18, $vr1, 1 +# CHECK-INST: vpickve2gr.b $t6, $vr1, 1 +# CHECK-ENCODING: encoding: [0x32,0x84,0xef,0x72] + +vpickve2gr.h $r2, $vr5, 3 +# CHECK-INST: vpickve2gr.h $tp, $vr5, 3 +# CHECK-ENCODING: encoding: [0xa2,0xcc,0xef,0x72] + +vpickve2gr.w $r3, $vr11, 2 +# CHECK-INST: vpickve2gr.w $sp, $vr11, 2 +# CHECK-ENCODING: encoding: [0x63,0xe9,0xef,0x72] + +vpickve2gr.d $r26, $vr1, 1 +# CHECK-INST: vpickve2gr.d $s3, $vr1, 1 +# CHECK-ENCODING: encoding: [0x3a,0xf4,0xef,0x72] + +vpickve2gr.bu $r28, $vr14, 6 +# CHECK-INST: vpickve2gr.bu $s5, $vr14, 6 +# CHECK-ENCODING: encoding: [0xdc,0x99,0xf3,0x72] + +vpickve2gr.hu $r7, $vr6, 7 +# CHECK-INST: vpickve2gr.hu $a3, $vr6, 7 +# CHECK-ENCODING: encoding: [0xc7,0xdc,0xf3,0x72] + +vpickve2gr.wu $r11, $vr30, 1 +# CHECK-INST: vpickve2gr.wu $a7, $vr30, 1 +# CHECK-ENCODING: encoding: [0xcb,0xe7,0xf3,0x72] + +vpickve2gr.du $r13, $vr5, 0 +# CHECK-INST: vpickve2gr.du $t1, $vr5, 0 +# CHECK-ENCODING: encoding: [0xad,0xf0,0xf3,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/replgr2vr.s b/llvm/test/MC/LoongArch/lsx/replgr2vr.s new file mode 100644 index 0000000000000..5e5c048862fe3 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/replgr2vr.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vreplgr2vr.b $vr30, $r27 +# CHECK-INST: vreplgr2vr.b $vr30, $s4 +# CHECK-ENCODING: encoding: [0x7e,0x03,0x9f,0x72] + +vreplgr2vr.h $vr6, $r1 +# CHECK-INST: vreplgr2vr.h $vr6, $ra +# CHECK-ENCODING: encoding: [0x26,0x04,0x9f,0x72] + +vreplgr2vr.w $vr23, $r9 +# CHECK-INST: vreplgr2vr.w $vr23, $a5 +# CHECK-ENCODING: encoding: [0x37,0x09,0x9f,0x72] + +vreplgr2vr.d $vr17, $r14 +# CHECK-INST: vreplgr2vr.d $vr17, $t2 +# CHECK-ENCODING: encoding: [0xd1,0x0d,0x9f,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/replve.s b/llvm/test/MC/LoongArch/lsx/replve.s new file mode 100644 index 0000000000000..b9943acb361ae --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/replve.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vreplve.b $vr10, $vr31, $r20 +# CHECK-INST: vreplve.b $vr10, $vr31, $t8 +# CHECK-ENCODING: encoding: [0xea,0x53,0x22,0x71] + +vreplve.h $vr8, $vr3, $r30 +# CHECK-INST: vreplve.h $vr8, $vr3, $s7 +# CHECK-ENCODING: encoding: [0x68,0xf8,0x22,0x71] + +vreplve.w $vr5, $vr1, $r20 +# CHECK-INST: vreplve.w $vr5, $vr1, $t8 +# CHECK-ENCODING: encoding: [0x25,0x50,0x23,0x71] + +vreplve.d $vr11, $vr15, $r30 +# CHECK-INST: vreplve.d $vr11, $vr15, $s7 +# CHECK-ENCODING: encoding: [0xeb,0xf9,0x23,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/replvei.s b/llvm/test/MC/LoongArch/lsx/replvei.s new file mode 100644 index 0000000000000..dd1ce0f96aeb1 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/replvei.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vreplvei.b $vr23, $vr3, 3 +# CHECK-INST: vreplvei.b $vr23, $vr3, 3 +# CHECK-ENCODING: encoding: [0x77,0x8c,0xf7,0x72] + +vreplvei.h $vr27, $vr16, 0 +# CHECK-INST: vreplvei.h $vr27, $vr16, 0 +# CHECK-ENCODING: encoding: [0x1b,0xc2,0xf7,0x72] + +vreplvei.w $vr18, $vr23, 3 +# CHECK-INST: vreplvei.w $vr18, $vr23, 3 +# CHECK-ENCODING: encoding: [0xf2,0xee,0xf7,0x72] + +vreplvei.d $vr15, $vr12, 1 +# CHECK-INST: vreplvei.d $vr15, $vr12, 1 +# CHECK-ENCODING: encoding: [0x8f,0xf5,0xf7,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/rotr.s b/llvm/test/MC/LoongArch/lsx/rotr.s new file mode 100644 index 0000000000000..101405e5b6b86 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/rotr.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vrotr.b $vr15, $vr25, $vr30 +# CHECK-INST: vrotr.b $vr15, $vr25, $vr30 +# CHECK-ENCODING: encoding: [0x2f,0x7b,0xee,0x70] + +vrotr.h $vr5, $vr23, $vr14 +# CHECK-INST: vrotr.h $vr5, $vr23, $vr14 +# CHECK-ENCODING: encoding: [0xe5,0xba,0xee,0x70] + +vrotr.w $vr27, $vr0, $vr7 +# CHECK-INST: vrotr.w $vr27, $vr0, $vr7 +# CHECK-ENCODING: encoding: [0x1b,0x1c,0xef,0x70] + +vrotr.d $vr2, $vr3, $vr21 +# CHECK-INST: vrotr.d $vr2, $vr3, $vr21 +# CHECK-ENCODING: encoding: [0x62,0xd4,0xef,0x70] + +vrotri.b $vr17, $vr22, 5 +# CHECK-INST: vrotri.b $vr17, $vr22, 5 +# CHECK-ENCODING: encoding: [0xd1,0x36,0xa0,0x72] + +vrotri.h $vr27, $vr20, 10 +# CHECK-INST: vrotri.h $vr27, $vr20, 10 +# CHECK-ENCODING: encoding: [0x9b,0x6a,0xa0,0x72] + +vrotri.w $vr21, $vr24, 14 +# CHECK-INST: vrotri.w $vr21, $vr24, 14 +# CHECK-ENCODING: encoding: [0x15,0xbb,0xa0,0x72] + +vrotri.d $vr25, $vr23, 14 +# CHECK-INST: vrotri.d $vr25, $vr23, 14 +# CHECK-ENCODING: encoding: [0xf9,0x3a,0xa1,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/sadd.s b/llvm/test/MC/LoongArch/lsx/sadd.s new file mode 100644 index 0000000000000..9709a8a8e75f2 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sadd.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsadd.b $vr29, $vr30, $vr11 +# CHECK-INST: vsadd.b $vr29, $vr30, $vr11 +# CHECK-ENCODING: encoding: [0xdd,0x2f,0x46,0x70] + +vsadd.h $vr1, $vr2, $vr29 +# CHECK-INST: vsadd.h $vr1, $vr2, $vr29 +# CHECK-ENCODING: encoding: [0x41,0xf4,0x46,0x70] + +vsadd.w $vr19, $vr28, $vr28 +# CHECK-INST: vsadd.w $vr19, $vr28, $vr28 +# CHECK-ENCODING: encoding: [0x93,0x73,0x47,0x70] + +vsadd.d $vr19, $vr30, $vr20 +# CHECK-INST: vsadd.d $vr19, $vr30, $vr20 +# CHECK-ENCODING: encoding: [0xd3,0xd3,0x47,0x70] + +vsadd.bu $vr22, $vr22, $vr16 +# CHECK-INST: vsadd.bu $vr22, $vr22, $vr16 +# CHECK-ENCODING: encoding: [0xd6,0x42,0x4a,0x70] + +vsadd.hu $vr0, $vr16, $vr8 +# CHECK-INST: vsadd.hu $vr0, $vr16, $vr8 +# CHECK-ENCODING: encoding: [0x00,0xa2,0x4a,0x70] + +vsadd.wu $vr9, $vr23, $vr24 +# CHECK-INST: vsadd.wu $vr9, $vr23, $vr24 +# CHECK-ENCODING: encoding: [0xe9,0x62,0x4b,0x70] + +vsadd.du $vr28, $vr11, $vr30 +# CHECK-INST: vsadd.du $vr28, $vr11, $vr30 +# CHECK-ENCODING: encoding: [0x7c,0xf9,0x4b,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/sat.s b/llvm/test/MC/LoongArch/lsx/sat.s new file mode 100644 index 0000000000000..677e7fc5ab534 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sat.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsat.b $vr29, $vr0, 1 +# CHECK-INST: vsat.b $vr29, $vr0, 1 +# CHECK-ENCODING: encoding: [0x1d,0x24,0x24,0x73] + +vsat.h $vr4, $vr13, 13 +# CHECK-INST: vsat.h $vr4, $vr13, 13 +# CHECK-ENCODING: encoding: [0xa4,0x75,0x24,0x73] + +vsat.w $vr6, $vr29, 19 +# CHECK-INST: vsat.w $vr6, $vr29, 19 +# CHECK-ENCODING: encoding: [0xa6,0xcf,0x24,0x73] + +vsat.d $vr22, $vr6, 54 +# CHECK-INST: vsat.d $vr22, $vr6, 54 +# CHECK-ENCODING: encoding: [0xd6,0xd8,0x25,0x73] + +vsat.bu $vr17, $vr8, 6 +# CHECK-INST: vsat.bu $vr17, $vr8, 6 +# CHECK-ENCODING: encoding: [0x11,0x39,0x28,0x73] + +vsat.hu $vr2, $vr14, 2 +# CHECK-INST: vsat.hu $vr2, $vr14, 2 +# CHECK-ENCODING: encoding: [0xc2,0x49,0x28,0x73] + +vsat.wu $vr1, $vr28, 19 +# CHECK-INST: vsat.wu $vr1, $vr28, 19 +# CHECK-ENCODING: encoding: [0x81,0xcf,0x28,0x73] + +vsat.du $vr25, $vr6, 59 +# CHECK-INST: vsat.du $vr25, $vr6, 59 +# CHECK-ENCODING: encoding: [0xd9,0xec,0x29,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/seq.s b/llvm/test/MC/LoongArch/lsx/seq.s new file mode 100644 index 0000000000000..764c94ef6f1a1 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/seq.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vseq.b $vr15, $vr30, $vr24 +# CHECK-INST: vseq.b $vr15, $vr30, $vr24 +# CHECK-ENCODING: encoding: [0xcf,0x63,0x00,0x70] + +vseq.h $vr7, $vr4, $vr22 +# CHECK-INST: vseq.h $vr7, $vr4, $vr22 +# CHECK-ENCODING: encoding: [0x87,0xd8,0x00,0x70] + +vseq.w $vr4, $vr15, $vr28 +# CHECK-INST: vseq.w $vr4, $vr15, $vr28 +# CHECK-ENCODING: encoding: [0xe4,0x71,0x01,0x70] + +vseq.d $vr29, $vr26, $vr22 +# CHECK-INST: vseq.d $vr29, $vr26, $vr22 +# CHECK-ENCODING: encoding: [0x5d,0xdb,0x01,0x70] + +vseqi.b $vr19, $vr30, 14 +# CHECK-INST: vseqi.b $vr19, $vr30, 14 +# CHECK-ENCODING: encoding: [0xd3,0x3b,0x80,0x72] + +vseqi.h $vr15, $vr2, 15 +# CHECK-INST: vseqi.h $vr15, $vr2, 15 +# CHECK-ENCODING: encoding: [0x4f,0xbc,0x80,0x72] + +vseqi.w $vr27, $vr23, -10 +# CHECK-INST: vseqi.w $vr27, $vr23, -10 +# CHECK-ENCODING: encoding: [0xfb,0x5a,0x81,0x72] + +vseqi.d $vr6, $vr12, -2 +# CHECK-INST: vseqi.d $vr6, $vr12, -2 +# CHECK-ENCODING: encoding: [0x86,0xf9,0x81,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/set.s b/llvm/test/MC/LoongArch/lsx/set.s new file mode 100644 index 0000000000000..bd2cfb57a4e8f --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/set.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vseteqz.v $fcc0, $vr13 +# CHECK-INST: vseteqz.v $fcc0, $vr13 +# CHECK-ENCODING: encoding: [0xa0,0x99,0x9c,0x72] + +vsetnez.v $fcc7, $vr14 +# CHECK-INST: vsetnez.v $fcc7, $vr14 +# CHECK-ENCODING: encoding: [0xc7,0x9d,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/setallnez.s b/llvm/test/MC/LoongArch/lsx/setallnez.s new file mode 100644 index 0000000000000..8ca6f14973145 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/setallnez.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsetallnez.b $fcc2, $vr8 +# CHECK-INST: vsetallnez.b $fcc2, $vr8 +# CHECK-ENCODING: encoding: [0x02,0xb1,0x9c,0x72] + +vsetallnez.h $fcc0, $vr26 +# CHECK-INST: vsetallnez.h $fcc0, $vr26 +# CHECK-ENCODING: encoding: [0x40,0xb7,0x9c,0x72] + +vsetallnez.w $fcc6, $vr17 +# CHECK-INST: vsetallnez.w $fcc6, $vr17 +# CHECK-ENCODING: encoding: [0x26,0xba,0x9c,0x72] + +vsetallnez.d $fcc0, $vr27 +# CHECK-INST: vsetallnez.d $fcc0, $vr27 +# CHECK-ENCODING: encoding: [0x60,0xbf,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/setanyeqz.s b/llvm/test/MC/LoongArch/lsx/setanyeqz.s new file mode 100644 index 0000000000000..6dbd4f17048f5 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/setanyeqz.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsetanyeqz.b $fcc3, $vr4 +# CHECK-INST: vsetanyeqz.b $fcc3, $vr4 +# CHECK-ENCODING: encoding: [0x83,0xa0,0x9c,0x72] + +vsetanyeqz.h $fcc2, $vr15 +# CHECK-INST: vsetanyeqz.h $fcc2, $vr15 +# CHECK-ENCODING: encoding: [0xe2,0xa5,0x9c,0x72] + +vsetanyeqz.w $fcc4, $vr0 +# CHECK-INST: vsetanyeqz.w $fcc4, $vr0 +# CHECK-ENCODING: encoding: [0x04,0xa8,0x9c,0x72] + +vsetanyeqz.d $fcc3, $vr7 +# CHECK-INST: vsetanyeqz.d $fcc3, $vr7 +# CHECK-ENCODING: encoding: [0xe3,0xac,0x9c,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/shuf.s b/llvm/test/MC/LoongArch/lsx/shuf.s new file mode 100644 index 0000000000000..0e73aba22e98a --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/shuf.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vshuf.b $vr27, $vr17, $vr31, $vr28 +# CHECK-INST: vshuf.b $vr27, $vr17, $vr31, $vr28 +# CHECK-ENCODING: encoding: [0x3b,0x7e,0x5e,0x0d] + +vshuf.h $vr21, $vr10, $vr31 +# CHECK-INST: vshuf.h $vr21, $vr10, $vr31 +# CHECK-ENCODING: encoding: [0x55,0xfd,0x7a,0x71] + +vshuf.w $vr18, $vr17, $vr23 +# CHECK-INST: vshuf.w $vr18, $vr17, $vr23 +# CHECK-ENCODING: encoding: [0x32,0x5e,0x7b,0x71] + +vshuf.d $vr4, $vr24, $vr11 +# CHECK-INST: vshuf.d $vr4, $vr24, $vr11 +# CHECK-ENCODING: encoding: [0x04,0xaf,0x7b,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/shuf4i.s b/llvm/test/MC/LoongArch/lsx/shuf4i.s new file mode 100644 index 0000000000000..d22e2956c77b3 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/shuf4i.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vshuf4i.b $vr30, $vr14, 72 +# CHECK-INST: vshuf4i.b $vr30, $vr14, 72 +# CHECK-ENCODING: encoding: [0xde,0x21,0x91,0x73] + +vshuf4i.h $vr13, $vr4, 222 +# CHECK-INST: vshuf4i.h $vr13, $vr4, 222 +# CHECK-ENCODING: encoding: [0x8d,0x78,0x97,0x73] + +vshuf4i.w $vr17, $vr8, 74 +# CHECK-INST: vshuf4i.w $vr17, $vr8, 74 +# CHECK-ENCODING: encoding: [0x11,0x29,0x99,0x73] + +vshuf4i.d $vr11, $vr6, 157 +# CHECK-INST: vshuf4i.d $vr11, $vr6, 157 +# CHECK-ENCODING: encoding: [0xcb,0x74,0x9e,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/signcov.s b/llvm/test/MC/LoongArch/lsx/signcov.s new file mode 100644 index 0000000000000..343a46f3ef0fe --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/signcov.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsigncov.b $vr11, $vr3, $vr7 +# CHECK-INST: vsigncov.b $vr11, $vr3, $vr7 +# CHECK-ENCODING: encoding: [0x6b,0x1c,0x2e,0x71] + +vsigncov.h $vr8, $vr29, $vr1 +# CHECK-INST: vsigncov.h $vr8, $vr29, $vr1 +# CHECK-ENCODING: encoding: [0xa8,0x87,0x2e,0x71] + +vsigncov.w $vr28, $vr13, $vr21 +# CHECK-INST: vsigncov.w $vr28, $vr13, $vr21 +# CHECK-ENCODING: encoding: [0xbc,0x55,0x2f,0x71] + +vsigncov.d $vr22, $vr20, $vr0 +# CHECK-INST: vsigncov.d $vr22, $vr20, $vr0 +# CHECK-ENCODING: encoding: [0x96,0x82,0x2f,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/sle.s b/llvm/test/MC/LoongArch/lsx/sle.s new file mode 100644 index 0000000000000..cf86e632947f7 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sle.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsle.b $vr4, $vr30, $vr18 +# CHECK-INST: vsle.b $vr4, $vr30, $vr18 +# CHECK-ENCODING: encoding: [0xc4,0x4b,0x02,0x70] + +vsle.h $vr3, $vr13, $vr12 +# CHECK-INST: vsle.h $vr3, $vr13, $vr12 +# CHECK-ENCODING: encoding: [0xa3,0xb1,0x02,0x70] + +vsle.w $vr21, $vr17, $vr20 +# CHECK-INST: vsle.w $vr21, $vr17, $vr20 +# CHECK-ENCODING: encoding: [0x35,0x52,0x03,0x70] + +vsle.d $vr22, $vr0, $vr28 +# CHECK-INST: vsle.d $vr22, $vr0, $vr28 +# CHECK-ENCODING: encoding: [0x16,0xf0,0x03,0x70] + +vslei.b $vr8, $vr11, 4 +# CHECK-INST: vslei.b $vr8, $vr11, 4 +# CHECK-ENCODING: encoding: [0x68,0x11,0x82,0x72] + +vslei.h $vr15, $vr22, 0 +# CHECK-INST: vslei.h $vr15, $vr22, 0 +# CHECK-ENCODING: encoding: [0xcf,0x82,0x82,0x72] + +vslei.w $vr23, $vr17, 12 +# CHECK-INST: vslei.w $vr23, $vr17, 12 +# CHECK-ENCODING: encoding: [0x37,0x32,0x83,0x72] + +vslei.d $vr11, $vr18, -12 +# CHECK-INST: vslei.d $vr11, $vr18, -12 +# CHECK-ENCODING: encoding: [0x4b,0xd2,0x83,0x72] + +vsle.bu $vr20, $vr11, $vr31 +# CHECK-INST: vsle.bu $vr20, $vr11, $vr31 +# CHECK-ENCODING: encoding: [0x74,0x7d,0x04,0x70] + +vsle.hu $vr5, $vr6, $vr7 +# CHECK-INST: vsle.hu $vr5, $vr6, $vr7 +# CHECK-ENCODING: encoding: [0xc5,0x9c,0x04,0x70] + +vsle.wu $vr15, $vr14, $vr22 +# CHECK-INST: vsle.wu $vr15, $vr14, $vr22 +# CHECK-ENCODING: encoding: [0xcf,0x59,0x05,0x70] + +vsle.du $vr0, $vr29, $vr17 +# CHECK-INST: vsle.du $vr0, $vr29, $vr17 +# CHECK-ENCODING: encoding: [0xa0,0xc7,0x05,0x70] + +vslei.bu $vr12, $vr27, 12 +# CHECK-INST: vslei.bu $vr12, $vr27, 12 +# CHECK-ENCODING: encoding: [0x6c,0x33,0x84,0x72] + +vslei.hu $vr22, $vr31, 12 +# CHECK-INST: vslei.hu $vr22, $vr31, 12 +# CHECK-ENCODING: encoding: [0xf6,0xb3,0x84,0x72] + +vslei.wu $vr19, $vr18, 21 +# CHECK-INST: vslei.wu $vr19, $vr18, 21 +# CHECK-ENCODING: encoding: [0x53,0x56,0x85,0x72] + +vslei.du $vr19, $vr14, 26 +# CHECK-INST: vslei.du $vr19, $vr14, 26 +# CHECK-ENCODING: encoding: [0xd3,0xe9,0x85,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/sll.s b/llvm/test/MC/LoongArch/lsx/sll.s new file mode 100644 index 0000000000000..e443abeef59ff --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sll.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsll.b $vr31, $vr13, $vr5 +# CHECK-INST: vsll.b $vr31, $vr13, $vr5 +# CHECK-ENCODING: encoding: [0xbf,0x15,0xe8,0x70] + +vsll.h $vr31, $vr1, $vr4 +# CHECK-INST: vsll.h $vr31, $vr1, $vr4 +# CHECK-ENCODING: encoding: [0x3f,0x90,0xe8,0x70] + +vsll.w $vr8, $vr19, $vr19 +# CHECK-INST: vsll.w $vr8, $vr19, $vr19 +# CHECK-ENCODING: encoding: [0x68,0x4e,0xe9,0x70] + +vsll.d $vr6, $vr25, $vr6 +# CHECK-INST: vsll.d $vr6, $vr25, $vr6 +# CHECK-ENCODING: encoding: [0x26,0x9b,0xe9,0x70] + +vslli.b $vr6, $vr7, 2 +# CHECK-INST: vslli.b $vr6, $vr7, 2 +# CHECK-ENCODING: encoding: [0xe6,0x28,0x2c,0x73] + +vslli.h $vr6, $vr4, 10 +# CHECK-INST: vslli.h $vr6, $vr4, 10 +# CHECK-ENCODING: encoding: [0x86,0x68,0x2c,0x73] + +vslli.w $vr3, $vr13, 17 +# CHECK-INST: vslli.w $vr3, $vr13, 17 +# CHECK-ENCODING: encoding: [0xa3,0xc5,0x2c,0x73] + +vslli.d $vr24, $vr11, 38 +# CHECK-INST: vslli.d $vr24, $vr11, 38 +# CHECK-ENCODING: encoding: [0x78,0x99,0x2d,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/sllwil.s b/llvm/test/MC/LoongArch/lsx/sllwil.s new file mode 100644 index 0000000000000..3aec8d63ab242 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sllwil.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsllwil.h.b $vr7, $vr6, 3 +# CHECK-INST: vsllwil.h.b $vr7, $vr6, 3 +# CHECK-ENCODING: encoding: [0xc7,0x2c,0x08,0x73] + +vsllwil.w.h $vr6, $vr5, 8 +# CHECK-INST: vsllwil.w.h $vr6, $vr5, 8 +# CHECK-ENCODING: encoding: [0xa6,0x60,0x08,0x73] + +vsllwil.d.w $vr15, $vr1, 22 +# CHECK-INST: vsllwil.d.w $vr15, $vr1, 22 +# CHECK-ENCODING: encoding: [0x2f,0xd8,0x08,0x73] + +vsllwil.hu.bu $vr13, $vr4, 4 +# CHECK-INST: vsllwil.hu.bu $vr13, $vr4, 4 +# CHECK-ENCODING: encoding: [0x8d,0x30,0x0c,0x73] + +vsllwil.wu.hu $vr1, $vr4, 3 +# CHECK-INST: vsllwil.wu.hu $vr1, $vr4, 3 +# CHECK-ENCODING: encoding: [0x81,0x4c,0x0c,0x73] + +vsllwil.du.wu $vr18, $vr29, 25 +# CHECK-INST: vsllwil.du.wu $vr18, $vr29, 25 +# CHECK-ENCODING: encoding: [0xb2,0xe7,0x0c,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/slt.s b/llvm/test/MC/LoongArch/lsx/slt.s new file mode 100644 index 0000000000000..86034324d3d59 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/slt.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vslt.b $vr24, $vr23, $vr26 +# CHECK-INST: vslt.b $vr24, $vr23, $vr26 +# CHECK-ENCODING: encoding: [0xf8,0x6a,0x06,0x70] + +vslt.h $vr23, $vr4, $vr6 +# CHECK-INST: vslt.h $vr23, $vr4, $vr6 +# CHECK-ENCODING: encoding: [0x97,0x98,0x06,0x70] + +vslt.w $vr30, $vr25, $vr1 +# CHECK-INST: vslt.w $vr30, $vr25, $vr1 +# CHECK-ENCODING: encoding: [0x3e,0x07,0x07,0x70] + +vslt.d $vr25, $vr22, $vr15 +# CHECK-INST: vslt.d $vr25, $vr22, $vr15 +# CHECK-ENCODING: encoding: [0xd9,0xbe,0x07,0x70] + +vslti.b $vr11, $vr12, -10 +# CHECK-INST: vslti.b $vr11, $vr12, -10 +# CHECK-ENCODING: encoding: [0x8b,0x59,0x86,0x72] + +vslti.h $vr20, $vr12, -8 +# CHECK-INST: vslti.h $vr20, $vr12, -8 +# CHECK-ENCODING: encoding: [0x94,0xe1,0x86,0x72] + +vslti.w $vr20, $vr27, 0 +# CHECK-INST: vslti.w $vr20, $vr27, 0 +# CHECK-ENCODING: encoding: [0x74,0x03,0x87,0x72] + +vslti.d $vr19, $vr18, 4 +# CHECK-INST: vslti.d $vr19, $vr18, 4 +# CHECK-ENCODING: encoding: [0x53,0x92,0x87,0x72] + +vslt.bu $vr5, $vr30, $vr28 +# CHECK-INST: vslt.bu $vr5, $vr30, $vr28 +# CHECK-ENCODING: encoding: [0xc5,0x73,0x08,0x70] + +vslt.hu $vr13, $vr28, $vr23 +# CHECK-INST: vslt.hu $vr13, $vr28, $vr23 +# CHECK-ENCODING: encoding: [0x8d,0xdf,0x08,0x70] + +vslt.wu $vr20, $vr28, $vr1 +# CHECK-INST: vslt.wu $vr20, $vr28, $vr1 +# CHECK-ENCODING: encoding: [0x94,0x07,0x09,0x70] + +vslt.du $vr6, $vr6, $vr5 +# CHECK-INST: vslt.du $vr6, $vr6, $vr5 +# CHECK-ENCODING: encoding: [0xc6,0x94,0x09,0x70] + +vslti.bu $vr9, $vr29, 23 +# CHECK-INST: vslti.bu $vr9, $vr29, 23 +# CHECK-ENCODING: encoding: [0xa9,0x5f,0x88,0x72] + +vslti.hu $vr28, $vr13, 6 +# CHECK-INST: vslti.hu $vr28, $vr13, 6 +# CHECK-ENCODING: encoding: [0xbc,0x99,0x88,0x72] + +vslti.wu $vr11, $vr9, 12 +# CHECK-INST: vslti.wu $vr11, $vr9, 12 +# CHECK-ENCODING: encoding: [0x2b,0x31,0x89,0x72] + +vslti.du $vr23, $vr30, 21 +# CHECK-INST: vslti.du $vr23, $vr30, 21 +# CHECK-ENCODING: encoding: [0xd7,0xd7,0x89,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/sra.s b/llvm/test/MC/LoongArch/lsx/sra.s new file mode 100644 index 0000000000000..3220a4159c53e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sra.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsra.b $vr30, $vr9, $vr11 +# CHECK-INST: vsra.b $vr30, $vr9, $vr11 +# CHECK-ENCODING: encoding: [0x3e,0x2d,0xec,0x70] + +vsra.h $vr20, $vr17, $vr26 +# CHECK-INST: vsra.h $vr20, $vr17, $vr26 +# CHECK-ENCODING: encoding: [0x34,0xea,0xec,0x70] + +vsra.w $vr12, $vr21, $vr15 +# CHECK-INST: vsra.w $vr12, $vr21, $vr15 +# CHECK-ENCODING: encoding: [0xac,0x3e,0xed,0x70] + +vsra.d $vr8, $vr8, $vr11 +# CHECK-INST: vsra.d $vr8, $vr8, $vr11 +# CHECK-ENCODING: encoding: [0x08,0xad,0xed,0x70] + +vsrai.b $vr9, $vr0, 4 +# CHECK-INST: vsrai.b $vr9, $vr0, 4 +# CHECK-ENCODING: encoding: [0x09,0x30,0x34,0x73] + +vsrai.h $vr1, $vr8, 6 +# CHECK-INST: vsrai.h $vr1, $vr8, 6 +# CHECK-ENCODING: encoding: [0x01,0x59,0x34,0x73] + +vsrai.w $vr20, $vr30, 14 +# CHECK-INST: vsrai.w $vr20, $vr30, 14 +# CHECK-ENCODING: encoding: [0xd4,0xbb,0x34,0x73] + +vsrai.d $vr0, $vr21, 12 +# CHECK-INST: vsrai.d $vr0, $vr21, 12 +# CHECK-ENCODING: encoding: [0xa0,0x32,0x35,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/sran.s b/llvm/test/MC/LoongArch/lsx/sran.s new file mode 100644 index 0000000000000..595a5be90dacc --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sran.s @@ -0,0 +1,16 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsran.b.h $vr25, $vr2, $vr31 +# CHECK-INST: vsran.b.h $vr25, $vr2, $vr31 +# CHECK-ENCODING: encoding: [0x59,0xfc,0xf6,0x70] + +vsran.h.w $vr31, $vr10, $vr3 +# CHECK-INST: vsran.h.w $vr31, $vr10, $vr3 +# CHECK-ENCODING: encoding: [0x5f,0x0d,0xf7,0x70] + +vsran.w.d $vr8, $vr3, $vr12 +# CHECK-INST: vsran.w.d $vr8, $vr3, $vr12 +# CHECK-ENCODING: encoding: [0x68,0xb0,0xf7,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/srani.s b/llvm/test/MC/LoongArch/lsx/srani.s new file mode 100644 index 0000000000000..f28d728073595 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srani.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrani.b.h $vr3, $vr0, 9 +# CHECK-INST: vsrani.b.h $vr3, $vr0, 9 +# CHECK-ENCODING: encoding: [0x03,0x64,0x58,0x73] + +vsrani.h.w $vr4, $vr3, 26 +# CHECK-INST: vsrani.h.w $vr4, $vr3, 26 +# CHECK-ENCODING: encoding: [0x64,0xe8,0x58,0x73] + +vsrani.w.d $vr8, $vr27, 52 +# CHECK-INST: vsrani.w.d $vr8, $vr27, 52 +# CHECK-ENCODING: encoding: [0x68,0xd3,0x59,0x73] + +vsrani.d.q $vr21, $vr24, 28 +# CHECK-INST: vsrani.d.q $vr21, $vr24, 28 +# CHECK-ENCODING: encoding: [0x15,0x73,0x5a,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/srar.s b/llvm/test/MC/LoongArch/lsx/srar.s new file mode 100644 index 0000000000000..b62bda2030eab --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srar.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrar.b $vr5, $vr31, $vr9 +# CHECK-INST: vsrar.b $vr5, $vr31, $vr9 +# CHECK-ENCODING: encoding: [0xe5,0x27,0xf2,0x70] + +vsrar.h $vr30, $vr23, $vr30 +# CHECK-INST: vsrar.h $vr30, $vr23, $vr30 +# CHECK-ENCODING: encoding: [0xfe,0xfa,0xf2,0x70] + +vsrar.w $vr22, $vr8, $vr1 +# CHECK-INST: vsrar.w $vr22, $vr8, $vr1 +# CHECK-ENCODING: encoding: [0x16,0x05,0xf3,0x70] + +vsrar.d $vr17, $vr1, $vr5 +# CHECK-INST: vsrar.d $vr17, $vr1, $vr5 +# CHECK-ENCODING: encoding: [0x31,0x94,0xf3,0x70] + +vsrari.b $vr11, $vr24, 5 +# CHECK-INST: vsrari.b $vr11, $vr24, 5 +# CHECK-ENCODING: encoding: [0x0b,0x37,0xa8,0x72] + +vsrari.h $vr24, $vr0, 7 +# CHECK-INST: vsrari.h $vr24, $vr0, 7 +# CHECK-ENCODING: encoding: [0x18,0x5c,0xa8,0x72] + +vsrari.w $vr16, $vr0, 0 +# CHECK-INST: vsrari.w $vr16, $vr0, 0 +# CHECK-ENCODING: encoding: [0x10,0x80,0xa8,0x72] + +vsrari.d $vr16, $vr13, 63 +# CHECK-INST: vsrari.d $vr16, $vr13, 63 +# CHECK-ENCODING: encoding: [0xb0,0xfd,0xa9,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/srarn.s b/llvm/test/MC/LoongArch/lsx/srarn.s new file mode 100644 index 0000000000000..665f722d67937 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srarn.s @@ -0,0 +1,16 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrarn.b.h $vr19, $vr23, $vr21 +# CHECK-INST: vsrarn.b.h $vr19, $vr23, $vr21 +# CHECK-ENCODING: encoding: [0xf3,0xd6,0xfa,0x70] + +vsrarn.h.w $vr18, $vr6, $vr7 +# CHECK-INST: vsrarn.h.w $vr18, $vr6, $vr7 +# CHECK-ENCODING: encoding: [0xd2,0x1c,0xfb,0x70] + +vsrarn.w.d $vr2, $vr11, $vr5 +# CHECK-INST: vsrarn.w.d $vr2, $vr11, $vr5 +# CHECK-ENCODING: encoding: [0x62,0x95,0xfb,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/srarni.s b/llvm/test/MC/LoongArch/lsx/srarni.s new file mode 100644 index 0000000000000..356d071a6e919 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srarni.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrarni.b.h $vr29, $vr20, 5 +# CHECK-INST: vsrarni.b.h $vr29, $vr20, 5 +# CHECK-ENCODING: encoding: [0x9d,0x56,0x5c,0x73] + +vsrarni.h.w $vr3, $vr29, 14 +# CHECK-INST: vsrarni.h.w $vr3, $vr29, 14 +# CHECK-ENCODING: encoding: [0xa3,0xbb,0x5c,0x73] + +vsrarni.w.d $vr14, $vr19, 10 +# CHECK-INST: vsrarni.w.d $vr14, $vr19, 10 +# CHECK-ENCODING: encoding: [0x6e,0x2a,0x5d,0x73] + +vsrarni.d.q $vr22, $vr27, 38 +# CHECK-INST: vsrarni.d.q $vr22, $vr27, 38 +# CHECK-ENCODING: encoding: [0x76,0x9b,0x5e,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/srl.s b/llvm/test/MC/LoongArch/lsx/srl.s new file mode 100644 index 0000000000000..d6d806bfb12a4 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srl.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrl.b $vr20, $vr7, $vr27 +# CHECK-INST: vsrl.b $vr20, $vr7, $vr27 +# CHECK-ENCODING: encoding: [0xf4,0x6c,0xea,0x70] + +vsrl.h $vr31, $vr5, $vr31 +# CHECK-INST: vsrl.h $vr31, $vr5, $vr31 +# CHECK-ENCODING: encoding: [0xbf,0xfc,0xea,0x70] + +vsrl.w $vr31, $vr0, $vr6 +# CHECK-INST: vsrl.w $vr31, $vr0, $vr6 +# CHECK-ENCODING: encoding: [0x1f,0x18,0xeb,0x70] + +vsrl.d $vr6, $vr8, $vr7 +# CHECK-INST: vsrl.d $vr6, $vr8, $vr7 +# CHECK-ENCODING: encoding: [0x06,0x9d,0xeb,0x70] + +vsrli.b $vr17, $vr8, 6 +# CHECK-INST: vsrli.b $vr17, $vr8, 6 +# CHECK-ENCODING: encoding: [0x11,0x39,0x30,0x73] + +vsrli.h $vr3, $vr31, 2 +# CHECK-INST: vsrli.h $vr3, $vr31, 2 +# CHECK-ENCODING: encoding: [0xe3,0x4b,0x30,0x73] + +vsrli.w $vr17, $vr5, 0 +# CHECK-INST: vsrli.w $vr17, $vr5, 0 +# CHECK-ENCODING: encoding: [0xb1,0x80,0x30,0x73] + +vsrli.d $vr16, $vr22, 34 +# CHECK-INST: vsrli.d $vr16, $vr22, 34 +# CHECK-ENCODING: encoding: [0xd0,0x8a,0x31,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/srln.s b/llvm/test/MC/LoongArch/lsx/srln.s new file mode 100644 index 0000000000000..55b1f1b921a18 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srln.s @@ -0,0 +1,16 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrln.b.h $vr29, $vr28, $vr27 +# CHECK-INST: vsrln.b.h $vr29, $vr28, $vr27 +# CHECK-ENCODING: encoding: [0x9d,0xef,0xf4,0x70] + +vsrln.h.w $vr18, $vr17, $vr0 +# CHECK-INST: vsrln.h.w $vr18, $vr17, $vr0 +# CHECK-ENCODING: encoding: [0x32,0x02,0xf5,0x70] + +vsrln.w.d $vr16, $vr5, $vr19 +# CHECK-INST: vsrln.w.d $vr16, $vr5, $vr19 +# CHECK-ENCODING: encoding: [0xb0,0xcc,0xf5,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/srlni.s b/llvm/test/MC/LoongArch/lsx/srlni.s new file mode 100644 index 0000000000000..97c7831e8568e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srlni.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrlni.b.h $vr15, $vr25, 9 +# CHECK-INST: vsrlni.b.h $vr15, $vr25, 9 +# CHECK-ENCODING: encoding: [0x2f,0x67,0x40,0x73] + +vsrlni.h.w $vr3, $vr0, 8 +# CHECK-INST: vsrlni.h.w $vr3, $vr0, 8 +# CHECK-ENCODING: encoding: [0x03,0xa0,0x40,0x73] + +vsrlni.w.d $vr19, $vr26, 51 +# CHECK-INST: vsrlni.w.d $vr19, $vr26, 51 +# CHECK-ENCODING: encoding: [0x53,0xcf,0x41,0x73] + +vsrlni.d.q $vr10, $vr18, 60 +# CHECK-INST: vsrlni.d.q $vr10, $vr18, 60 +# CHECK-ENCODING: encoding: [0x4a,0xf2,0x42,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/srlr.s b/llvm/test/MC/LoongArch/lsx/srlr.s new file mode 100644 index 0000000000000..b78c178b5db8e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srlr.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrlr.b $vr27, $vr1, $vr6 +# CHECK-INST: vsrlr.b $vr27, $vr1, $vr6 +# CHECK-ENCODING: encoding: [0x3b,0x18,0xf0,0x70] + +vsrlr.h $vr31, $vr18, $vr2 +# CHECK-INST: vsrlr.h $vr31, $vr18, $vr2 +# CHECK-ENCODING: encoding: [0x5f,0x8a,0xf0,0x70] + +vsrlr.w $vr21, $vr29, $vr30 +# CHECK-INST: vsrlr.w $vr21, $vr29, $vr30 +# CHECK-ENCODING: encoding: [0xb5,0x7b,0xf1,0x70] + +vsrlr.d $vr4, $vr3, $vr30 +# CHECK-INST: vsrlr.d $vr4, $vr3, $vr30 +# CHECK-ENCODING: encoding: [0x64,0xf8,0xf1,0x70] + +vsrlri.b $vr20, $vr24, 6 +# CHECK-INST: vsrlri.b $vr20, $vr24, 6 +# CHECK-ENCODING: encoding: [0x14,0x3b,0xa4,0x72] + +vsrlri.h $vr23, $vr22, 4 +# CHECK-INST: vsrlri.h $vr23, $vr22, 4 +# CHECK-ENCODING: encoding: [0xd7,0x52,0xa4,0x72] + +vsrlri.w $vr19, $vr8, 1 +# CHECK-INST: vsrlri.w $vr19, $vr8, 1 +# CHECK-ENCODING: encoding: [0x13,0x85,0xa4,0x72] + +vsrlri.d $vr18, $vr30, 51 +# CHECK-INST: vsrlri.d $vr18, $vr30, 51 +# CHECK-ENCODING: encoding: [0xd2,0xcf,0xa5,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/srlrn.s b/llvm/test/MC/LoongArch/lsx/srlrn.s new file mode 100644 index 0000000000000..a00cc80df7cfc --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srlrn.s @@ -0,0 +1,16 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrlrn.b.h $vr10, $vr18, $vr11 +# CHECK-INST: vsrlrn.b.h $vr10, $vr18, $vr11 +# CHECK-ENCODING: encoding: [0x4a,0xae,0xf8,0x70] + +vsrlrn.h.w $vr28, $vr15, $vr22 +# CHECK-INST: vsrlrn.h.w $vr28, $vr15, $vr22 +# CHECK-ENCODING: encoding: [0xfc,0x59,0xf9,0x70] + +vsrlrn.w.d $vr19, $vr7, $vr26 +# CHECK-INST: vsrlrn.w.d $vr19, $vr7, $vr26 +# CHECK-ENCODING: encoding: [0xf3,0xe8,0xf9,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/srlrni.s b/llvm/test/MC/LoongArch/lsx/srlrni.s new file mode 100644 index 0000000000000..361914b44574c --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/srlrni.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsrlrni.b.h $vr15, $vr5, 3 +# CHECK-INST: vsrlrni.b.h $vr15, $vr5, 3 +# CHECK-ENCODING: encoding: [0xaf,0x4c,0x44,0x73] + +vsrlrni.h.w $vr28, $vr27, 1 +# CHECK-INST: vsrlrni.h.w $vr28, $vr27, 1 +# CHECK-ENCODING: encoding: [0x7c,0x87,0x44,0x73] + +vsrlrni.w.d $vr3, $vr25, 56 +# CHECK-INST: vsrlrni.w.d $vr3, $vr25, 56 +# CHECK-ENCODING: encoding: [0x23,0xe3,0x45,0x73] + +vsrlrni.d.q $vr4, $vr16, 13 +# CHECK-INST: vsrlrni.d.q $vr4, $vr16, 13 +# CHECK-ENCODING: encoding: [0x04,0x36,0x46,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/ssran.s b/llvm/test/MC/LoongArch/lsx/ssran.s new file mode 100644 index 0000000000000..fefbd29a2b64d --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssran.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssran.b.h $vr26, $vr26, $vr18 +# CHECK-INST: vssran.b.h $vr26, $vr26, $vr18 +# CHECK-ENCODING: encoding: [0x5a,0xcb,0xfe,0x70] + +vssran.h.w $vr21, $vr14, $vr11 +# CHECK-INST: vssran.h.w $vr21, $vr14, $vr11 +# CHECK-ENCODING: encoding: [0xd5,0x2d,0xff,0x70] + +vssran.w.d $vr4, $vr21, $vr11 +# CHECK-INST: vssran.w.d $vr4, $vr21, $vr11 +# CHECK-ENCODING: encoding: [0xa4,0xae,0xff,0x70] + +vssran.bu.h $vr10, $vr30, $vr19 +# CHECK-INST: vssran.bu.h $vr10, $vr30, $vr19 +# CHECK-ENCODING: encoding: [0xca,0xcf,0x06,0x71] + +vssran.hu.w $vr7, $vr8, $vr20 +# CHECK-INST: vssran.hu.w $vr7, $vr8, $vr20 +# CHECK-ENCODING: encoding: [0x07,0x51,0x07,0x71] + +vssran.wu.d $vr10, $vr21, $vr0 +# CHECK-INST: vssran.wu.d $vr10, $vr21, $vr0 +# CHECK-ENCODING: encoding: [0xaa,0x82,0x07,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ssrani.s b/llvm/test/MC/LoongArch/lsx/ssrani.s new file mode 100644 index 0000000000000..20ac1cbad35c1 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrani.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrani.b.h $vr3, $vr12, 10 +# CHECK-INST: vssrani.b.h $vr3, $vr12, 10 +# CHECK-ENCODING: encoding: [0x83,0x69,0x60,0x73] + +vssrani.h.w $vr3, $vr25, 0 +# CHECK-INST: vssrani.h.w $vr3, $vr25, 0 +# CHECK-ENCODING: encoding: [0x23,0x83,0x60,0x73] + +vssrani.w.d $vr12, $vr19, 43 +# CHECK-INST: vssrani.w.d $vr12, $vr19, 43 +# CHECK-ENCODING: encoding: [0x6c,0xae,0x61,0x73] + +vssrani.d.q $vr25, $vr8, 13 +# CHECK-INST: vssrani.d.q $vr25, $vr8, 13 +# CHECK-ENCODING: encoding: [0x19,0x35,0x62,0x73] + +vssrani.bu.h $vr26, $vr16, 12 +# CHECK-INST: vssrani.bu.h $vr26, $vr16, 12 +# CHECK-ENCODING: encoding: [0x1a,0x72,0x64,0x73] + +vssrani.hu.w $vr31, $vr6, 28 +# CHECK-INST: vssrani.hu.w $vr31, $vr6, 28 +# CHECK-ENCODING: encoding: [0xdf,0xf0,0x64,0x73] + +vssrani.wu.d $vr29, $vr25, 2 +# CHECK-INST: vssrani.wu.d $vr29, $vr25, 2 +# CHECK-ENCODING: encoding: [0x3d,0x0b,0x65,0x73] + +vssrani.du.q $vr22, $vr27, 71 +# CHECK-INST: vssrani.du.q $vr22, $vr27, 71 +# CHECK-ENCODING: encoding: [0x76,0x1f,0x67,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/ssrarn.s b/llvm/test/MC/LoongArch/lsx/ssrarn.s new file mode 100644 index 0000000000000..8157423b255c7 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrarn.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrarn.b.h $vr27, $vr29, $vr23 +# CHECK-INST: vssrarn.b.h $vr27, $vr29, $vr23 +# CHECK-ENCODING: encoding: [0xbb,0xdf,0x02,0x71] + +vssrarn.h.w $vr13, $vr17, $vr0 +# CHECK-INST: vssrarn.h.w $vr13, $vr17, $vr0 +# CHECK-ENCODING: encoding: [0x2d,0x02,0x03,0x71] + +vssrarn.w.d $vr5, $vr11, $vr16 +# CHECK-INST: vssrarn.w.d $vr5, $vr11, $vr16 +# CHECK-ENCODING: encoding: [0x65,0xc1,0x03,0x71] + +vssrarn.bu.h $vr18, $vr10, $vr13 +# CHECK-INST: vssrarn.bu.h $vr18, $vr10, $vr13 +# CHECK-ENCODING: encoding: [0x52,0xb5,0x0a,0x71] + +vssrarn.hu.w $vr5, $vr25, $vr16 +# CHECK-INST: vssrarn.hu.w $vr5, $vr25, $vr16 +# CHECK-ENCODING: encoding: [0x25,0x43,0x0b,0x71] + +vssrarn.wu.d $vr6, $vr23, $vr30 +# CHECK-INST: vssrarn.wu.d $vr6, $vr23, $vr30 +# CHECK-ENCODING: encoding: [0xe6,0xfa,0x0b,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ssrarni.s b/llvm/test/MC/LoongArch/lsx/ssrarni.s new file mode 100644 index 0000000000000..9a33f67110a3a --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrarni.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrarni.b.h $vr3, $vr9, 2 +# CHECK-INST: vssrarni.b.h $vr3, $vr9, 2 +# CHECK-ENCODING: encoding: [0x23,0x49,0x68,0x73] + +vssrarni.h.w $vr21, $vr17, 8 +# CHECK-INST: vssrarni.h.w $vr21, $vr17, 8 +# CHECK-ENCODING: encoding: [0x35,0xa2,0x68,0x73] + +vssrarni.w.d $vr7, $vr6, 5 +# CHECK-INST: vssrarni.w.d $vr7, $vr6, 5 +# CHECK-ENCODING: encoding: [0xc7,0x14,0x69,0x73] + +vssrarni.d.q $vr4, $vr22, 90 +# CHECK-INST: vssrarni.d.q $vr4, $vr22, 90 +# CHECK-ENCODING: encoding: [0xc4,0x6a,0x6b,0x73] + +vssrarni.bu.h $vr25, $vr0, 9 +# CHECK-INST: vssrarni.bu.h $vr25, $vr0, 9 +# CHECK-ENCODING: encoding: [0x19,0x64,0x6c,0x73] + +vssrarni.hu.w $vr5, $vr2, 24 +# CHECK-INST: vssrarni.hu.w $vr5, $vr2, 24 +# CHECK-ENCODING: encoding: [0x45,0xe0,0x6c,0x73] + +vssrarni.wu.d $vr23, $vr29, 25 +# CHECK-INST: vssrarni.wu.d $vr23, $vr29, 25 +# CHECK-ENCODING: encoding: [0xb7,0x67,0x6d,0x73] + +vssrarni.du.q $vr2, $vr12, 106 +# CHECK-INST: vssrarni.du.q $vr2, $vr12, 106 +# CHECK-ENCODING: encoding: [0x82,0xa9,0x6f,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/ssrln.s b/llvm/test/MC/LoongArch/lsx/ssrln.s new file mode 100644 index 0000000000000..1b00e3b543224 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrln.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrln.b.h $vr20, $vr5, $vr20 +# CHECK-INST: vssrln.b.h $vr20, $vr5, $vr20 +# CHECK-ENCODING: encoding: [0xb4,0xd0,0xfc,0x70] + +vssrln.h.w $vr0, $vr21, $vr2 +# CHECK-INST: vssrln.h.w $vr0, $vr21, $vr2 +# CHECK-ENCODING: encoding: [0xa0,0x0a,0xfd,0x70] + +vssrln.w.d $vr16, $vr6, $vr3 +# CHECK-INST: vssrln.w.d $vr16, $vr6, $vr3 +# CHECK-ENCODING: encoding: [0xd0,0x8c,0xfd,0x70] + +vssrln.bu.h $vr6, $vr30, $vr9 +# CHECK-INST: vssrln.bu.h $vr6, $vr30, $vr9 +# CHECK-ENCODING: encoding: [0xc6,0xa7,0x04,0x71] + +vssrln.hu.w $vr2, $vr8, $vr3 +# CHECK-INST: vssrln.hu.w $vr2, $vr8, $vr3 +# CHECK-ENCODING: encoding: [0x02,0x0d,0x05,0x71] + +vssrln.wu.d $vr28, $vr28, $vr5 +# CHECK-INST: vssrln.wu.d $vr28, $vr28, $vr5 +# CHECK-ENCODING: encoding: [0x9c,0x97,0x05,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ssrlni.s b/llvm/test/MC/LoongArch/lsx/ssrlni.s new file mode 100644 index 0000000000000..eb630b3d61a07 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrlni.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrlni.b.h $vr2, $vr23, 5 +# CHECK-INST: vssrlni.b.h $vr2, $vr23, 5 +# CHECK-ENCODING: encoding: [0xe2,0x56,0x48,0x73] + +vssrlni.h.w $vr15, $vr20, 12 +# CHECK-INST: vssrlni.h.w $vr15, $vr20, 12 +# CHECK-ENCODING: encoding: [0x8f,0xb2,0x48,0x73] + +vssrlni.w.d $vr27, $vr9, 7 +# CHECK-INST: vssrlni.w.d $vr27, $vr9, 7 +# CHECK-ENCODING: encoding: [0x3b,0x1d,0x49,0x73] + +vssrlni.d.q $vr10, $vr2, 4 +# CHECK-INST: vssrlni.d.q $vr10, $vr2, 4 +# CHECK-ENCODING: encoding: [0x4a,0x10,0x4a,0x73] + +vssrlni.bu.h $vr19, $vr3, 2 +# CHECK-INST: vssrlni.bu.h $vr19, $vr3, 2 +# CHECK-ENCODING: encoding: [0x73,0x48,0x4c,0x73] + +vssrlni.hu.w $vr31, $vr19, 1 +# CHECK-INST: vssrlni.hu.w $vr31, $vr19, 1 +# CHECK-ENCODING: encoding: [0x7f,0x86,0x4c,0x73] + +vssrlni.wu.d $vr13, $vr27, 6 +# CHECK-INST: vssrlni.wu.d $vr13, $vr27, 6 +# CHECK-ENCODING: encoding: [0x6d,0x1b,0x4d,0x73] + +vssrlni.du.q $vr11, $vr30, 32 +# CHECK-INST: vssrlni.du.q $vr11, $vr30, 32 +# CHECK-ENCODING: encoding: [0xcb,0x83,0x4e,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/ssrlrn.s b/llvm/test/MC/LoongArch/lsx/ssrlrn.s new file mode 100644 index 0000000000000..e0eeb3ac2afc0 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrlrn.s @@ -0,0 +1,28 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrlrn.b.h $vr28, $vr3, $vr15 +# CHECK-INST: vssrlrn.b.h $vr28, $vr3, $vr15 +# CHECK-ENCODING: encoding: [0x7c,0xbc,0x00,0x71] + +vssrlrn.h.w $vr22, $vr0, $vr9 +# CHECK-INST: vssrlrn.h.w $vr22, $vr0, $vr9 +# CHECK-ENCODING: encoding: [0x16,0x24,0x01,0x71] + +vssrlrn.w.d $vr6, $vr14, $vr21 +# CHECK-INST: vssrlrn.w.d $vr6, $vr14, $vr21 +# CHECK-ENCODING: encoding: [0xc6,0xd5,0x01,0x71] + +vssrlrn.bu.h $vr10, $vr24, $vr12 +# CHECK-INST: vssrlrn.bu.h $vr10, $vr24, $vr12 +# CHECK-ENCODING: encoding: [0x0a,0xb3,0x08,0x71] + +vssrlrn.hu.w $vr29, $vr6, $vr1 +# CHECK-INST: vssrlrn.hu.w $vr29, $vr6, $vr1 +# CHECK-ENCODING: encoding: [0xdd,0x04,0x09,0x71] + +vssrlrn.wu.d $vr2, $vr23, $vr7 +# CHECK-INST: vssrlrn.wu.d $vr2, $vr23, $vr7 +# CHECK-ENCODING: encoding: [0xe2,0x9e,0x09,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/ssrlrni.s b/llvm/test/MC/LoongArch/lsx/ssrlrni.s new file mode 100644 index 0000000000000..3c5c25fdab540 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssrlrni.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssrlrni.b.h $vr18, $vr21, 6 +# CHECK-INST: vssrlrni.b.h $vr18, $vr21, 6 +# CHECK-ENCODING: encoding: [0xb2,0x5a,0x50,0x73] + +vssrlrni.h.w $vr7, $vr12, 9 +# CHECK-INST: vssrlrni.h.w $vr7, $vr12, 9 +# CHECK-ENCODING: encoding: [0x87,0xa5,0x50,0x73] + +vssrlrni.w.d $vr10, $vr14, 63 +# CHECK-INST: vssrlrni.w.d $vr10, $vr14, 63 +# CHECK-ENCODING: encoding: [0xca,0xfd,0x51,0x73] + +vssrlrni.d.q $vr12, $vr26, 68 +# CHECK-INST: vssrlrni.d.q $vr12, $vr26, 68 +# CHECK-ENCODING: encoding: [0x4c,0x13,0x53,0x73] + +vssrlrni.bu.h $vr22, $vr24, 1 +# CHECK-INST: vssrlrni.bu.h $vr22, $vr24, 1 +# CHECK-ENCODING: encoding: [0x16,0x47,0x54,0x73] + +vssrlrni.hu.w $vr27, $vr17, 7 +# CHECK-INST: vssrlrni.hu.w $vr27, $vr17, 7 +# CHECK-ENCODING: encoding: [0x3b,0x9e,0x54,0x73] + +vssrlrni.wu.d $vr3, $vr15, 56 +# CHECK-INST: vssrlrni.wu.d $vr3, $vr15, 56 +# CHECK-ENCODING: encoding: [0xe3,0xe1,0x55,0x73] + +vssrlrni.du.q $vr12, $vr10, 4 +# CHECK-INST: vssrlrni.du.q $vr12, $vr10, 4 +# CHECK-ENCODING: encoding: [0x4c,0x11,0x56,0x73] diff --git a/llvm/test/MC/LoongArch/lsx/ssub.s b/llvm/test/MC/LoongArch/lsx/ssub.s new file mode 100644 index 0000000000000..603d26a05ccf3 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/ssub.s @@ -0,0 +1,36 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vssub.b $vr10, $vr10, $vr11 +# CHECK-INST: vssub.b $vr10, $vr10, $vr11 +# CHECK-ENCODING: encoding: [0x4a,0x2d,0x48,0x70] + +vssub.h $vr2, $vr18, $vr5 +# CHECK-INST: vssub.h $vr2, $vr18, $vr5 +# CHECK-ENCODING: encoding: [0x42,0x96,0x48,0x70] + +vssub.w $vr28, $vr10, $vr2 +# CHECK-INST: vssub.w $vr28, $vr10, $vr2 +# CHECK-ENCODING: encoding: [0x5c,0x09,0x49,0x70] + +vssub.d $vr25, $vr3, $vr10 +# CHECK-INST: vssub.d $vr25, $vr3, $vr10 +# CHECK-ENCODING: encoding: [0x79,0xa8,0x49,0x70] + +vssub.bu $vr31, $vr13, $vr11 +# CHECK-INST: vssub.bu $vr31, $vr13, $vr11 +# CHECK-ENCODING: encoding: [0xbf,0x2d,0x4c,0x70] + +vssub.hu $vr15, $vr19, $vr9 +# CHECK-INST: vssub.hu $vr15, $vr19, $vr9 +# CHECK-ENCODING: encoding: [0x6f,0xa6,0x4c,0x70] + +vssub.wu $vr15, $vr12, $vr14 +# CHECK-INST: vssub.wu $vr15, $vr12, $vr14 +# CHECK-ENCODING: encoding: [0x8f,0x39,0x4d,0x70] + +vssub.du $vr29, $vr4, $vr11 +# CHECK-INST: vssub.du $vr29, $vr4, $vr11 +# CHECK-ENCODING: encoding: [0x9d,0xac,0x4d,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/st.s b/llvm/test/MC/LoongArch/lsx/st.s new file mode 100644 index 0000000000000..e4e05aa2f3bbe --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/st.s @@ -0,0 +1,12 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vst $vr9, $r17, 1700 +# CHECK-INST: vst $vr9, $t5, 1700 +# CHECK-ENCODING: encoding: [0x29,0x92,0x5a,0x2c] + +vstx $vr23, $r17, $r31 +# CHECK-INST: vstx $vr23, $t5, $s8 +# CHECK-ENCODING: encoding: [0x37,0x7e,0x44,0x38] diff --git a/llvm/test/MC/LoongArch/lsx/stelm.s b/llvm/test/MC/LoongArch/lsx/stelm.s new file mode 100644 index 0000000000000..8935d99336f49 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/stelm.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vstelm.b $vr22, $r31, -90, 12 +# CHECK-INST: vstelm.b $vr22, $s8, -90, 12 +# CHECK-ENCODING: encoding: [0xf6,0x9b,0xb2,0x31] + +vstelm.h $vr28, $r2, 48, 7 +# CHECK-INST: vstelm.h $vr28, $tp, 48, 7 +# CHECK-ENCODING: encoding: [0x5c,0x60,0x5c,0x31] + +vstelm.w $vr18, $r12, -40, 2 +# CHECK-INST: vstelm.w $vr18, $t0, -40, 2 +# CHECK-ENCODING: encoding: [0x92,0xd9,0x2b,0x31] + +vstelm.d $vr4, $r23, -248, 1 +# CHECK-INST: vstelm.d $vr4, $s0, -248, 1 +# CHECK-ENCODING: encoding: [0xe4,0x86,0x17,0x31] diff --git a/llvm/test/MC/LoongArch/lsx/sub.s b/llvm/test/MC/LoongArch/lsx/sub.s new file mode 100644 index 0000000000000..8f3c55a28a580 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/sub.s @@ -0,0 +1,24 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsub.b $vr7, $vr21, $vr25 +# CHECK-INST: vsub.b $vr7, $vr21, $vr25 +# CHECK-ENCODING: encoding: [0xa7,0x66,0x0c,0x70] + +vsub.h $vr23, $vr7, $vr4 +# CHECK-INST: vsub.h $vr23, $vr7, $vr4 +# CHECK-ENCODING: encoding: [0xf7,0x90,0x0c,0x70] + +vsub.w $vr28, $vr27, $vr25 +# CHECK-INST: vsub.w $vr28, $vr27, $vr25 +# CHECK-ENCODING: encoding: [0x7c,0x67,0x0d,0x70] + +vsub.d $vr27, $vr11, $vr20 +# CHECK-INST: vsub.d $vr27, $vr11, $vr20 +# CHECK-ENCODING: encoding: [0x7b,0xd1,0x0d,0x70] + +vsub.q $vr8, $vr11, $vr15 +# CHECK-INST: vsub.q $vr8, $vr11, $vr15 +# CHECK-ENCODING: encoding: [0x68,0xbd,0x2d,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/subi.s b/llvm/test/MC/LoongArch/lsx/subi.s new file mode 100644 index 0000000000000..d26f306b713e8 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/subi.s @@ -0,0 +1,20 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsubi.bu $vr21, $vr1, 16 +# CHECK-INST: vsubi.bu $vr21, $vr1, 16 +# CHECK-ENCODING: encoding: [0x35,0x40,0x8c,0x72] + +vsubi.hu $vr10, $vr24, 8 +# CHECK-INST: vsubi.hu $vr10, $vr24, 8 +# CHECK-ENCODING: encoding: [0x0a,0xa3,0x8c,0x72] + +vsubi.wu $vr10, $vr13, 8 +# CHECK-INST: vsubi.wu $vr10, $vr13, 8 +# CHECK-ENCODING: encoding: [0xaa,0x21,0x8d,0x72] + +vsubi.du $vr27, $vr0, 29 +# CHECK-INST: vsubi.du $vr27, $vr0, 29 +# CHECK-ENCODING: encoding: [0x1b,0xf4,0x8d,0x72] diff --git a/llvm/test/MC/LoongArch/lsx/subw.s b/llvm/test/MC/LoongArch/lsx/subw.s new file mode 100644 index 0000000000000..49fc2a02e1a5f --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/subw.s @@ -0,0 +1,68 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vsubwev.h.b $vr21, $vr25, $vr20 +# CHECK-INST: vsubwev.h.b $vr21, $vr25, $vr20 +# CHECK-ENCODING: encoding: [0x35,0x53,0x20,0x70] + +vsubwev.w.h $vr11, $vr8, $vr10 +# CHECK-INST: vsubwev.w.h $vr11, $vr8, $vr10 +# CHECK-ENCODING: encoding: [0x0b,0xa9,0x20,0x70] + +vsubwev.d.w $vr30, $vr6, $vr24 +# CHECK-INST: vsubwev.d.w $vr30, $vr6, $vr24 +# CHECK-ENCODING: encoding: [0xde,0x60,0x21,0x70] + +vsubwev.q.d $vr4, $vr14, $vr23 +# CHECK-INST: vsubwev.q.d $vr4, $vr14, $vr23 +# CHECK-ENCODING: encoding: [0xc4,0xdd,0x21,0x70] + +vsubwev.h.bu $vr25, $vr20, $vr2 +# CHECK-INST: vsubwev.h.bu $vr25, $vr20, $vr2 +# CHECK-ENCODING: encoding: [0x99,0x0a,0x30,0x70] + +vsubwev.w.hu $vr1, $vr9, $vr28 +# CHECK-INST: vsubwev.w.hu $vr1, $vr9, $vr28 +# CHECK-ENCODING: encoding: [0x21,0xf1,0x30,0x70] + +vsubwev.d.wu $vr23, $vr13, $vr2 +# CHECK-INST: vsubwev.d.wu $vr23, $vr13, $vr2 +# CHECK-ENCODING: encoding: [0xb7,0x09,0x31,0x70] + +vsubwev.q.du $vr9, $vr28, $vr12 +# CHECK-INST: vsubwev.q.du $vr9, $vr28, $vr12 +# CHECK-ENCODING: encoding: [0x89,0xb3,0x31,0x70] + +vsubwod.h.b $vr9, $vr12, $vr26 +# CHECK-INST: vsubwod.h.b $vr9, $vr12, $vr26 +# CHECK-ENCODING: encoding: [0x89,0x69,0x24,0x70] + +vsubwod.w.h $vr31, $vr2, $vr10 +# CHECK-INST: vsubwod.w.h $vr31, $vr2, $vr10 +# CHECK-ENCODING: encoding: [0x5f,0xa8,0x24,0x70] + +vsubwod.d.w $vr6, $vr16, $vr15 +# CHECK-INST: vsubwod.d.w $vr6, $vr16, $vr15 +# CHECK-ENCODING: encoding: [0x06,0x3e,0x25,0x70] + +vsubwod.q.d $vr22, $vr0, $vr18 +# CHECK-INST: vsubwod.q.d $vr22, $vr0, $vr18 +# CHECK-ENCODING: encoding: [0x16,0xc8,0x25,0x70] + +vsubwod.h.bu $vr3, $vr17, $vr11 +# CHECK-INST: vsubwod.h.bu $vr3, $vr17, $vr11 +# CHECK-ENCODING: encoding: [0x23,0x2e,0x34,0x70] + +vsubwod.w.hu $vr9, $vr16, $vr26 +# CHECK-INST: vsubwod.w.hu $vr9, $vr16, $vr26 +# CHECK-ENCODING: encoding: [0x09,0xea,0x34,0x70] + +vsubwod.d.wu $vr23, $vr9, $vr8 +# CHECK-INST: vsubwod.d.wu $vr23, $vr9, $vr8 +# CHECK-ENCODING: encoding: [0x37,0x21,0x35,0x70] + +vsubwod.q.du $vr8, $vr15, $vr7 +# CHECK-INST: vsubwod.q.du $vr8, $vr15, $vr7 +# CHECK-ENCODING: encoding: [0xe8,0x9d,0x35,0x70] diff --git a/llvm/test/MC/LoongArch/lsx/xor.s b/llvm/test/MC/LoongArch/lsx/xor.s new file mode 100644 index 0000000000000..4d8c6eedbf68e --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/xor.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vxor.v $vr28, $vr16, $vr18 +# CHECK-INST: vxor.v $vr28, $vr16, $vr18 +# CHECK-ENCODING: encoding: [0x1c,0x4a,0x27,0x71] diff --git a/llvm/test/MC/LoongArch/lsx/xori.s b/llvm/test/MC/LoongArch/lsx/xori.s new file mode 100644 index 0000000000000..c06fb2179e192 --- /dev/null +++ b/llvm/test/MC/LoongArch/lsx/xori.s @@ -0,0 +1,8 @@ +# RUN: llvm-mc --triple=loongarch64 --show-encoding %s | \ +# RUN: FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST +# RUN: llvm-mc --triple=loongarch64 --filetype=obj %s | \ +# RUN: llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-INST + +vxori.b $vr13, $vr4, 74 +# CHECK-INST: vxori.b $vr13, $vr4, 74 +# CHECK-ENCODING: encoding: [0x8d,0x28,0xd9,0x73]