Skip to content

Commit 0acf700

Browse files
committed
[VE] Add integer arithmetic vector instructions
Add VADD/VADS/VADX/VSUB/VSBS/VSBX/VMPY/VMPS/VMPX/VMPD/VDIV/VDVS/VDVX instructions. Also add regression tests. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D89642
1 parent b2bec7c commit 0acf700

File tree

14 files changed

+516
-0
lines changed

14 files changed

+516
-0
lines changed

llvm/lib/Target/VE/VEInstrVec.td

Lines changed: 164 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,3 +433,167 @@ multiclass VMVm<string opcStr, bits<8>opc, RegisterClass RC,
433433
defm iv : VMVmm<opcStr, opc, RC, RCM, (ins uimm7:$sy, RC:$vz)>;
434434
}
435435
defm VMV : VMVm<"vmv", 0x9c, V64, VM>;
436+
437+
//-----------------------------------------------------------------------------
438+
// Section 8.10 - Vector Fixed-Point Arithmetic Instructions
439+
//-----------------------------------------------------------------------------
440+
441+
// Multiclass for generic vector calculation
442+
let vx = ?, hasSideEffects = 0, Uses = [VL] in
443+
multiclass RVbm<string opcStr, string argStr, bits<8>opc, RegisterClass RC,
444+
dag dag_in, string disEnc = ""> {
445+
let DisableEncoding = disEnc in
446+
def "" : RV<opc, (outs RC:$vx), dag_in,
447+
!strconcat(opcStr, " $vx", argStr)>;
448+
let Constraints = "$vx = $base", DisableEncoding = disEnc#"$base",
449+
isCodeGenOnly = 1 in
450+
def _v : RV<opc, (outs RC:$vx), !con(dag_in, (ins RC:$base)),
451+
!strconcat(opcStr, " $vx", argStr)>;
452+
}
453+
multiclass RVlm<string opcStr, string argStr, bits<8>opc, RegisterClass RC,
454+
dag dag_in> {
455+
defm "" : RVbm<opcStr, argStr, opc, RC, dag_in>;
456+
let isCodeGenOnly = 1, VE_VLInUse = 1 in {
457+
defm l : RVbm<opcStr, argStr, opc, RC, !con(dag_in, (ins I32:$vl)),
458+
"$vl,">;
459+
defm L : RVbm<opcStr, argStr, opc, RC, !con(dag_in, (ins VLS:$vl)),
460+
"$vl,">;
461+
}
462+
}
463+
multiclass RVmm<string opcStr, string argStr, bits<8>opc, RegisterClass RC,
464+
RegisterClass RCM, dag dag_in> {
465+
defm "" : RVlm<opcStr, argStr, opc, RC, dag_in>;
466+
let m = ?, VE_VLWithMask = 1 in
467+
defm m : RVlm<opcStr, argStr#", $m", opc, RC, !con(dag_in, (ins RCM:$m))>;
468+
}
469+
// Generic RV multiclass with 2 arguments.
470+
// e.g. VADD, VSUB, VMPY, and etc.
471+
let VE_VLIndex = 3 in
472+
multiclass RVm<string opcStr, bits<8>opc, RegisterClass VRC, RegisterClass RC,
473+
RegisterClass RCM, Operand SIMM = simm7> {
474+
let cy = 0, sy = 0, vy = ?, vz = ? in
475+
defm vv : RVmm<opcStr, ", $vy, $vz", opc, VRC, RCM, (ins VRC:$vy, VRC:$vz)>;
476+
let cs = 1, vz = ? in
477+
defm rv : RVmm<opcStr, ", $sy, $vz", opc, VRC, RCM, (ins RC:$sy, VRC:$vz)>;
478+
let cs = 1, cy = 0, vz = ? in
479+
defm iv : RVmm<opcStr, ", $sy, $vz", opc, VRC, RCM, (ins SIMM:$sy, VRC:$vz)>;
480+
}
481+
// Special RV multiclass with 2 arguments using cs2.
482+
// e.g. VDIV, VDVS, and VDVX.
483+
let VE_VLIndex = 3 in
484+
multiclass RVDIVm<string opcStr, bits<8>opc, RegisterClass VRC,
485+
RegisterClass RC, RegisterClass RCM, Operand SIMM = simm7> {
486+
let cy = 0, sy = 0, vy = ?, vz = ? in
487+
defm vv : RVmm<opcStr, ", $vy, $vz", opc, VRC, RCM, (ins VRC:$vy, VRC:$vz)>;
488+
let cs2 = 1, vy = ? in
489+
defm vr : RVmm<opcStr, ", $vy, $sy", opc, VRC, RCM, (ins VRC:$vy, RC:$sy)>;
490+
let cs2 = 1, cy = 0, vy = ? in
491+
defm vi : RVmm<opcStr, ", $vy, $sy", opc, VRC, RCM, (ins VRC:$vy, SIMM:$sy)>;
492+
let cs = 1, vz = ? in
493+
defm rv : RVmm<opcStr, ", $sy, $vz", opc, VRC, RCM, (ins RC:$sy, VRC:$vz)>;
494+
let cs = 1, cy = 0, vz = ? in
495+
defm iv : RVmm<opcStr, ", $sy, $vz", opc, VRC, RCM, (ins SIMM:$sy, VRC:$vz)>;
496+
}
497+
498+
// Section 8.10.1 - VADD (Vector Add)
499+
let cx = 0, cx2 = 0 in
500+
defm VADDUL : RVm<"vaddu.l", 0xc8, V64, I64, VM>;
501+
let cx = 0, cx2 = 1 in {
502+
defm PVADDULO : RVm<"pvaddu.lo", 0xc8, V64, I32, VM>;
503+
let isCodeGenOnly = 1 in
504+
defm VADDUW : RVm<"vaddu.w", 0xc8, V64, I32, VM>;
505+
}
506+
let cx = 1, cx2 = 0 in
507+
defm PVADDUUP : RVm<"pvaddu.up", 0xc8, V64, I64, VM>;
508+
let cx = 1, cx2 = 1 in
509+
defm PVADDU : RVm<"pvaddu", 0xc8, V64, I64, VM512>;
510+
def : MnemonicAlias<"vaddu.w", "pvaddu.lo">;
511+
512+
// Section 8.10.2 - VADS (Vector Add Single)
513+
let cx = 0, cx2 = 0 in
514+
defm VADDSWSX : RVm<"vadds.w.sx", 0xca, V64, I32, VM>;
515+
let cx = 0, cx2 = 1 in {
516+
defm PVADDSLO : RVm<"pvadds.lo", 0xca, V64, I32, VM>;
517+
let isCodeGenOnly = 1 in
518+
defm VADDSWZX : RVm<"vadds.w.zx", 0xca, V64, I32, VM>;
519+
}
520+
let cx = 1, cx2 = 0 in
521+
defm PVADDSUP : RVm<"pvadds.up", 0xca, V64, I64, VM>;
522+
let cx = 1, cx2 = 1 in
523+
defm PVADDS : RVm<"pvadds", 0xca, V64, I64, VM512>;
524+
def : MnemonicAlias<"pvadds.lo.sx", "vadds.w.sx">;
525+
def : MnemonicAlias<"vadds.w.zx", "pvadds.lo">;
526+
def : MnemonicAlias<"vadds.w", "pvadds.lo">;
527+
def : MnemonicAlias<"pvadds.lo.zx", "pvadds.lo">;
528+
529+
// Section 8.10.3 - VADX (Vector Add)
530+
defm VADDSL : RVm<"vadds.l", 0x8b, V64, I64, VM>;
531+
532+
// Section 8.10.4 - VSUB (Vector Subtract)
533+
let cx = 0, cx2 = 0 in
534+
defm VSUBUL : RVm<"vsubu.l", 0xd8, V64, I64, VM>;
535+
let cx = 0, cx2 = 1 in {
536+
defm PVSUBULO : RVm<"pvsubu.lo", 0xd8, V64, I32, VM>;
537+
let isCodeGenOnly = 1 in
538+
defm VSUBUW : RVm<"vsubu.w", 0xd8, V64, I32, VM>;
539+
}
540+
let cx = 1, cx2 = 0 in
541+
defm PVSUBUUP : RVm<"pvsubu.up", 0xd8, V64, I64, VM>;
542+
let cx = 1, cx2 = 1 in
543+
defm PVSUBU : RVm<"pvsubu", 0xd8, V64, I64, VM512>;
544+
def : MnemonicAlias<"vsubu.w", "pvsubu.lo">;
545+
546+
// Section 8.10.5 - VSBS (Vector Subtract Single)
547+
let cx = 0, cx2 = 0 in
548+
defm VSUBSWSX : RVm<"vsubs.w.sx", 0xda, V64, I32, VM>;
549+
let cx = 0, cx2 = 1 in {
550+
defm PVSUBSLO : RVm<"pvsubs.lo", 0xda, V64, I32, VM>;
551+
let isCodeGenOnly = 1 in
552+
defm VSUBSWZX : RVm<"vsubs.w.zx", 0xda, V64, I32, VM>;
553+
}
554+
let cx = 1, cx2 = 0 in
555+
defm PVSUBSUP : RVm<"pvsubs.up", 0xda, V64, I64, VM>;
556+
let cx = 1, cx2 = 1 in
557+
defm PVSUBS : RVm<"pvsubs", 0xda, V64, I64, VM512>;
558+
def : MnemonicAlias<"pvsubs.lo.sx", "vsubs.w.sx">;
559+
def : MnemonicAlias<"vsubs.w.zx", "pvsubs.lo">;
560+
def : MnemonicAlias<"vsubs.w", "pvsubs.lo">;
561+
def : MnemonicAlias<"pvsubs.lo.zx", "pvsubs.lo">;
562+
563+
// Section 8.10.6 - VSBX (Vector Subtract)
564+
defm VSUBSL : RVm<"vsubs.l", 0x9b, V64, I64, VM>;
565+
566+
// Section 8.10.7 - VMPY (Vector Multiply)
567+
let cx2 = 0 in
568+
defm VMULUL : RVm<"vmulu.l", 0xc9, V64, I64, VM>;
569+
let cx2 = 1 in
570+
defm VMULUW : RVm<"vmulu.w", 0xc9, V64, I32, VM>;
571+
572+
// Section 8.10.8 - VMPS (Vector Multiply Single)
573+
let cx2 = 0 in
574+
defm VMULSWSX : RVm<"vmuls.w.sx", 0xcb, V64, I32, VM>;
575+
let cx2 = 1 in
576+
defm VMULSWZX : RVm<"vmuls.w.zx", 0xcb, V64, I32, VM>;
577+
def : MnemonicAlias<"vmuls.w", "vmuls.w.zx">;
578+
579+
// Section 8.10.9 - VMPX (Vector Multiply)
580+
defm VMULSL : RVm<"vmuls.l", 0xdb, V64, I64, VM>;
581+
582+
// Section 8.10.10 - VMPD (Vector Multiply)
583+
defm VMULSLW : RVm<"vmuls.l.w", 0xd9, V64, I32, VM>;
584+
585+
// Section 8.10.11 - VDIV (Vector Divide)
586+
let cx2 = 0 in
587+
defm VDIVUL : RVDIVm<"vdivu.l", 0xe9, V64, I64, VM>;
588+
let cx2 = 1 in
589+
defm VDIVUW : RVDIVm<"vdivu.w", 0xe9, V64, I32, VM>;
590+
591+
// Section 8.10.12 - VDVS (Vector Divide Single)
592+
let cx2 = 0 in
593+
defm VDIVSWSX : RVDIVm<"vdivs.w.sx", 0xeb, V64, I32, VM>;
594+
let cx2 = 1 in
595+
defm VDIVSWZX : RVDIVm<"vdivs.w.zx", 0xeb, V64, I32, VM>;
596+
def : MnemonicAlias<"vdivs.w", "vdivs.w.zx">;
597+
598+
// Section 8.10.13 - VDVX (Vector Divide)
599+
defm VDIVSL : RVDIVm<"vdivs.l", 0xfb, V64, I64, VM>;

llvm/test/MC/VE/VADD.s

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vaddu.l %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xc8]
8+
vaddu.l %v11, %s20, %v22
9+
10+
# CHECK-INST: vaddu.l %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xc8]
12+
vaddu.l %vix, %vix, %vix
13+
14+
# CHECK-INST: pvaddu.lo %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xc8]
16+
vaddu.w %vix, 22, %v22
17+
18+
# CHECK-INST: pvaddu.lo %v11, 63, %v22, %vm11
19+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x6b,0xc8]
20+
pvaddu.lo %v11, 63, %v22, %vm11
21+
22+
# CHECK-INST: pvaddu.up %v11, %vix, %v22, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x16,0xff,0x0b,0x00,0x00,0x8b,0xc8]
24+
pvaddu.up %v11, %vix, %v22, %vm11
25+
26+
# CHECK-INST: pvaddu %v12, %v20, %v22, %vm12
27+
# CHECK-ENCODING: encoding: [0x00,0x16,0x14,0x0c,0x00,0x00,0xcc,0xc8]
28+
pvaddu %v12, %v20, %v22, %vm12

llvm/test/MC/VE/VADS.s

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vadds.w.sx %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xca]
8+
vadds.w.sx %v11, %s20, %v22
9+
10+
# CHECK-INST: vadds.w.sx %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xca]
12+
vadds.w.sx %vix, %vix, %vix
13+
14+
# CHECK-INST: pvadds.lo %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xca]
16+
vadds.w.zx %vix, 22, %v22
17+
18+
# CHECK-INST: pvadds.lo %vix, 22, %v22
19+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xca]
20+
vadds.w %vix, 22, %v22
21+
22+
# CHECK-INST: pvadds.lo %v11, 63, %v22, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x6b,0xca]
24+
pvadds.lo %v11, 63, %v22, %vm11
25+
26+
# CHECK-INST: vadds.w.sx %v11, 63, %v22, %vm11
27+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x2b,0xca]
28+
pvadds.lo.sx %v11, 63, %v22, %vm11
29+
30+
# CHECK-INST: pvadds.lo %v11, 63, %v22, %vm11
31+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x6b,0xca]
32+
pvadds.lo.zx %v11, 63, %v22, %vm11
33+
34+
# CHECK-INST: pvadds.up %v11, %vix, %v22, %vm11
35+
# CHECK-ENCODING: encoding: [0x00,0x16,0xff,0x0b,0x00,0x00,0x8b,0xca]
36+
pvadds.up %v11, %vix, %v22, %vm11
37+
38+
# CHECK-INST: pvadds %v12, %v20, %v22, %vm12
39+
# CHECK-ENCODING: encoding: [0x00,0x16,0x14,0x0c,0x00,0x00,0xcc,0xca]
40+
pvadds %v12, %v20, %v22, %vm12

llvm/test/MC/VE/VADX.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vadds.l %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0x8b]
8+
vadds.l %v11, %s20, %v22
9+
10+
# CHECK-INST: vadds.l %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0x8b]
12+
vadds.l %vix, %vix, %vix
13+
14+
# CHECK-INST: vadds.l %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x20,0x8b]
16+
vadds.l %vix, 22, %v22
17+
18+
# CHECK-INST: vadds.l %v11, 63, %v22, %vm11
19+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x2b,0x8b]
20+
vadds.l %v11, 63, %v22, %vm11
21+
22+
# CHECK-INST: vadds.l %v11, %v23, %v22, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x16,0x17,0x0b,0x00,0x00,0x0b,0x8b]
24+
vadds.l %v11, %v23, %v22, %vm11

llvm/test/MC/VE/VDIV.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vdivu.l %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xe9]
8+
vdivu.l %v11, %s20, %v22
9+
10+
# CHECK-INST: vdivu.l %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xe9]
12+
vdivu.l %vix, %vix, %vix
13+
14+
# CHECK-INST: vdivu.w %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xe9]
16+
vdivu.w %vix, 22, %v22
17+
18+
# CHECK-INST: vdivu.l %v11, %v22, 63, %vm11
19+
# CHECK-ENCODING: encoding: [0x00,0x00,0x16,0x0b,0x00,0x3f,0x1b,0xe9]
20+
vdivu.l %v11, %v22, 63, %vm11
21+
22+
# CHECK-INST: vdivu.l %v11, %vix, %s22, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x00,0xff,0x0b,0x00,0x96,0x1b,0xe9]
24+
vdivu.l %v11, %vix, %s22, %vm11

llvm/test/MC/VE/VDVS.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vdivs.w.sx %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xeb]
8+
vdivs.w.sx %v11, %s20, %v22
9+
10+
# CHECK-INST: vdivs.w.sx %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xeb]
12+
vdivs.w.sx %vix, %vix, %vix
13+
14+
# CHECK-INST: vdivs.w.zx %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xeb]
16+
vdivs.w.zx %vix, 22, %v22
17+
18+
# CHECK-INST: vdivs.w.zx %vix, %v22, 22
19+
# CHECK-ENCODING: encoding: [0x00,0x00,0x16,0xff,0x00,0x16,0x50,0xeb]
20+
vdivs.w %vix, %v22, 22
21+
22+
# CHECK-INST: vdivs.w.zx %v11, %v22, 63, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x00,0x16,0x0b,0x00,0x3f,0x5b,0xeb]
24+
vdivs.w %v11, %v22, 63, %vm11

llvm/test/MC/VE/VDVX.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vdivs.l %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xfb]
8+
vdivs.l %v11, %s20, %v22
9+
10+
# CHECK-INST: vdivs.l %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xfb]
12+
vdivs.l %vix, %vix, %vix
13+
14+
# CHECK-INST: vdivs.l %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x20,0xfb]
16+
vdivs.l %vix, 22, %v22
17+
18+
# CHECK-INST: vdivs.l %v11, %v22, 63, %vm11
19+
# CHECK-ENCODING: encoding: [0x00,0x00,0x16,0x0b,0x00,0x3f,0x1b,0xfb]
20+
vdivs.l %v11, %v22, 63, %vm11
21+
22+
# CHECK-INST: vdivs.l %v11, %v22, %s23, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x00,0x16,0x0b,0x00,0x97,0x1b,0xfb]
24+
vdivs.l %v11, %v22, %s23, %vm11

llvm/test/MC/VE/VMPD.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vmuls.l.w %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xd9]
8+
vmuls.l.w %v11, %s20, %v22
9+
10+
# CHECK-INST: vmuls.l.w %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xd9]
12+
vmuls.l.w %vix, %vix, %vix
13+
14+
# CHECK-INST: vmuls.l.w %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x20,0xd9]
16+
vmuls.l.w %vix, 22, %v22
17+
18+
# CHECK-INST: vmuls.l.w %v11, 63, %v22, %vm11
19+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x2b,0xd9]
20+
vmuls.l.w %v11, 63, %v22, %vm11
21+
22+
# CHECK-INST: vmuls.l.w %v11, %v23, %v22, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x16,0x17,0x0b,0x00,0x00,0x0b,0xd9]
24+
vmuls.l.w %v11, %v23, %v22, %vm11

llvm/test/MC/VE/VMPS.s

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
# RUN: llvm-mc -triple=ve --show-encoding < %s \
2+
# RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST
3+
# RUN: llvm-mc -triple=ve -filetype=obj < %s | llvm-objdump -d - \
4+
# RUN: | FileCheck %s --check-prefixes=CHECK-INST
5+
6+
# CHECK-INST: vmuls.w.sx %v11, %s20, %v22
7+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x94,0x20,0xcb]
8+
vmuls.w.sx %v11, %s20, %v22
9+
10+
# CHECK-INST: vmuls.w.sx %vix, %vix, %vix
11+
# CHECK-ENCODING: encoding: [0x00,0xff,0xff,0xff,0x00,0x00,0x00,0xcb]
12+
vmuls.w.sx %vix, %vix, %vix
13+
14+
# CHECK-INST: vmuls.w.zx %vix, 22, %v22
15+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xcb]
16+
vmuls.w.zx %vix, 22, %v22
17+
18+
# CHECK-INST: vmuls.w.zx %vix, 22, %v22
19+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0xff,0x00,0x16,0x60,0xcb]
20+
vmuls.w %vix, 22, %v22
21+
22+
# CHECK-INST: vmuls.w.zx %v11, 63, %v22, %vm11
23+
# CHECK-ENCODING: encoding: [0x00,0x16,0x00,0x0b,0x00,0x3f,0x6b,0xcb]
24+
vmuls.w %v11, 63, %v22, %vm11

0 commit comments

Comments
 (0)