Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[AArch64][SVE2] Add the SVE2.1 while predicate-as-counter instructions
This patch adds the assembly/disassembly for the following predicate-as-counter instructions: whilelt: While incrementing signed scalar less than scalar whilele: While incrementing signed scalar less than or equal to scalar whilegt: While incrementing signed scalar greater than scalar whilege: While incrementing signed scalar greater than or equal to scalar whilelo: While incrementing unsigned scalar lower than scalar whilels: While incrementing unsigned scalar lower or same as scalar whilehs: While decrementing unsigned scalar higher or same as scalar whilehi: While decrementing unsigned scalar higher than scalar The reference can be found here: https://developer.arm.com/documentation/ddi0602/2022-09 Differential Revision: https://reviews.llvm.org/D136750
- Loading branch information
Showing
18 changed files
with
1,163 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p1 2>&1 < %s | FileCheck %s | ||
|
||
// --------------------------------------------------------------------------// | ||
// Invalid Pattern | ||
|
||
whilege pn8.b, x0, x0, vlx1 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand | ||
// CHECK-NEXT: whilege pn8.b, x0, x0, vlx1 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
whilege pn8.b, x0, x0 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction | ||
// CHECK-NEXT: whilege pn8.b, x0, x0 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
// --------------------------------------------------------------------------// | ||
// Invalid use of predicate without suffix | ||
|
||
whilege pn8, x0, x0, vlx2 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid predicate register, expected PN in range pn8..pn15 with element suffix. | ||
// CHECK-NEXT: whilege pn8, x0, x0, vlx2 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
// --------------------------------------------------------------------------// | ||
// Out of range Predicate register | ||
|
||
whilege pn7.b, x0, x0, vlx2 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid predicate register, expected PN in range pn8..pn15 with element suffix. | ||
// CHECK-NEXT: whilege pn7.b, x0, x0, vlx2 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2 < %s \ | ||
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST | ||
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p1 < %s \ | ||
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST | ||
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR | ||
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme2 < %s \ | ||
// RUN: | llvm-objdump -d --mattr=+sme2 - | FileCheck %s --check-prefix=CHECK-INST | ||
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme2 < %s \ | ||
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN | ||
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2 < %s \ | ||
// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \ | ||
// RUN: | llvm-mc -triple=aarch64 -mattr=+sme2 -disassemble -show-encoding \ | ||
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST | ||
|
||
whilege pn8.h, x0, x0, vlx2 // 00100101-01100000-01000000-00010000 | ||
// CHECK-INST: whilege pn8.h, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x10,0x40,0x60,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25604010 <unknown> | ||
|
||
whilege pn13.h, x10, x21, vlx2 // 00100101-01110101-01000001-01010101 | ||
// CHECK-INST: whilege pn13.h, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x55,0x41,0x75,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25754155 <unknown> | ||
|
||
whilege pn15.h, x13, x8, vlx4 // 00100101-01101000-01100001-10110111 | ||
// CHECK-INST: whilege pn15.h, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xb7,0x61,0x68,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 256861b7 <unknown> | ||
|
||
whilege pn15.h, xzr, xzr, vlx4 // 00100101-01111111-01100011-11110111 | ||
// CHECK-INST: whilege pn15.h, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xf7,0x63,0x7f,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 257f63f7 <unknown> | ||
|
||
whilege pn8.s, x0, x0, vlx2 // 00100101-10100000-01000000-00010000 | ||
// CHECK-INST: whilege pn8.s, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x10,0x40,0xa0,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25a04010 <unknown> | ||
|
||
whilege pn13.s, x10, x21, vlx2 // 00100101-10110101-01000001-01010101 | ||
// CHECK-INST: whilege pn13.s, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x55,0x41,0xb5,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25b54155 <unknown> | ||
|
||
whilege pn15.s, x13, x8, vlx4 // 00100101-10101000-01100001-10110111 | ||
// CHECK-INST: whilege pn15.s, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xb7,0x61,0xa8,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25a861b7 <unknown> | ||
|
||
whilege pn15.s, xzr, xzr, vlx4 // 00100101-10111111-01100011-11110111 | ||
// CHECK-INST: whilege pn15.s, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xf7,0x63,0xbf,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25bf63f7 <unknown> | ||
|
||
whilege pn8.d, x0, x0, vlx2 // 00100101-11100000-01000000-00010000 | ||
// CHECK-INST: whilege pn8.d, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x10,0x40,0xe0,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25e04010 <unknown> | ||
|
||
whilege pn13.d, x10, x21, vlx2 // 00100101-11110101-01000001-01010101 | ||
// CHECK-INST: whilege pn13.d, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x55,0x41,0xf5,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25f54155 <unknown> | ||
|
||
whilege pn15.d, x13, x8, vlx4 // 00100101-11101000-01100001-10110111 | ||
// CHECK-INST: whilege pn15.d, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xb7,0x61,0xe8,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25e861b7 <unknown> | ||
|
||
whilege pn15.d, xzr, xzr, vlx4 // 00100101-11111111-01100011-11110111 | ||
// CHECK-INST: whilege pn15.d, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xf7,0x63,0xff,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25ff63f7 <unknown> | ||
|
||
whilege pn8.b, x0, x0, vlx2 // 00100101-00100000-01000000-00010000 | ||
// CHECK-INST: whilege pn8.b, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x10,0x40,0x20,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25204010 <unknown> | ||
|
||
whilege pn13.b, x10, x21, vlx2 // 00100101-00110101-01000001-01010101 | ||
// CHECK-INST: whilege pn13.b, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x55,0x41,0x35,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25354155 <unknown> | ||
|
||
whilege pn15.b, x13, x8, vlx4 // 00100101-00101000-01100001-10110111 | ||
// CHECK-INST: whilege pn15.b, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xb7,0x61,0x28,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 252861b7 <unknown> | ||
|
||
whilege pn15.b, xzr, xzr, vlx4 // 00100101-00111111-01100011-11110111 | ||
// CHECK-INST: whilege pn15.b, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xf7,0x63,0x3f,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 253f63f7 <unknown> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p1 2>&1 < %s | FileCheck %s | ||
|
||
// --------------------------------------------------------------------------// | ||
// Invalid Pattern | ||
|
||
whilegt pn8.b, x0, x0, vlx1 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand | ||
// CHECK-NEXT: whilegt pn8.b, x0, x0, vlx1 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
whilegt pn8.b, x0, x0 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction | ||
// CHECK-NEXT: whilegt pn8.b, x0, x0 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
// --------------------------------------------------------------------------// | ||
// Invalid use of predicate without suffix | ||
|
||
whilegt pn8, x0, x0, vlx2 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid predicate register, expected PN in range pn8..pn15 with element suffix. | ||
// CHECK-NEXT: whilegt pn8, x0, x0, vlx2 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
// --------------------------------------------------------------------------// | ||
// Out of range Predicate register | ||
|
||
whilegt pn7.b, x0, x0, vlx2 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid predicate register, expected PN in range pn8..pn15 with element suffix. | ||
// CHECK-NEXT: whilegt pn7.b, x0, x0, vlx2 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,110 @@ | ||
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2 < %s \ | ||
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST | ||
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p1 < %s \ | ||
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST | ||
// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \ | ||
// RUN: | FileCheck %s --check-prefix=CHECK-ERROR | ||
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme2 < %s \ | ||
// RUN: | llvm-objdump -d --mattr=+sme2 - | FileCheck %s --check-prefix=CHECK-INST | ||
// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+sme2 < %s \ | ||
// RUN: | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-UNKNOWN | ||
// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+sme2 < %s \ | ||
// RUN: | sed '/.text/d' | sed 's/.*encoding: //g' \ | ||
// RUN: | llvm-mc -triple=aarch64 -mattr=+sme2 -disassemble -show-encoding \ | ||
// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST | ||
|
||
whilegt pn8.h, x0, x0, vlx2 // 00100101-01100000-01000000-00011000 | ||
// CHECK-INST: whilegt pn8.h, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x18,0x40,0x60,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25604018 <unknown> | ||
|
||
whilegt pn13.h, x10, x21, vlx2 // 00100101-01110101-01000001-01011101 | ||
// CHECK-INST: whilegt pn13.h, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x5d,0x41,0x75,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 2575415d <unknown> | ||
|
||
whilegt pn15.h, x13, x8, vlx4 // 00100101-01101000-01100001-10111111 | ||
// CHECK-INST: whilegt pn15.h, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xbf,0x61,0x68,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 256861bf <unknown> | ||
|
||
whilegt pn15.h, xzr, xzr, vlx4 // 00100101-01111111-01100011-11111111 | ||
// CHECK-INST: whilegt pn15.h, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xff,0x63,0x7f,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 257f63ff <unknown> | ||
|
||
whilegt pn8.s, x0, x0, vlx2 // 00100101-10100000-01000000-00011000 | ||
// CHECK-INST: whilegt pn8.s, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x18,0x40,0xa0,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25a04018 <unknown> | ||
|
||
whilegt pn13.s, x10, x21, vlx2 // 00100101-10110101-01000001-01011101 | ||
// CHECK-INST: whilegt pn13.s, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x5d,0x41,0xb5,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25b5415d <unknown> | ||
|
||
whilegt pn15.s, x13, x8, vlx4 // 00100101-10101000-01100001-10111111 | ||
// CHECK-INST: whilegt pn15.s, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xbf,0x61,0xa8,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25a861bf <unknown> | ||
|
||
whilegt pn15.s, xzr, xzr, vlx4 // 00100101-10111111-01100011-11111111 | ||
// CHECK-INST: whilegt pn15.s, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xff,0x63,0xbf,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25bf63ff <unknown> | ||
|
||
whilegt pn8.d, x0, x0, vlx2 // 00100101-11100000-01000000-00011000 | ||
// CHECK-INST: whilegt pn8.d, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x18,0x40,0xe0,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25e04018 <unknown> | ||
|
||
whilegt pn13.d, x10, x21, vlx2 // 00100101-11110101-01000001-01011101 | ||
// CHECK-INST: whilegt pn13.d, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x5d,0x41,0xf5,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25f5415d <unknown> | ||
|
||
whilegt pn15.d, x13, x8, vlx4 // 00100101-11101000-01100001-10111111 | ||
// CHECK-INST: whilegt pn15.d, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xbf,0x61,0xe8,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25e861bf <unknown> | ||
|
||
whilegt pn15.d, xzr, xzr, vlx4 // 00100101-11111111-01100011-11111111 | ||
// CHECK-INST: whilegt pn15.d, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xff,0x63,0xff,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25ff63ff <unknown> | ||
|
||
whilegt pn8.b, x0, x0, vlx2 // 00100101-00100000-01000000-00011000 | ||
// CHECK-INST: whilegt pn8.b, x0, x0, vlx2 | ||
// CHECK-ENCODING: [0x18,0x40,0x20,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 25204018 <unknown> | ||
|
||
whilegt pn13.b, x10, x21, vlx2 // 00100101-00110101-01000001-01011101 | ||
// CHECK-INST: whilegt pn13.b, x10, x21, vlx2 | ||
// CHECK-ENCODING: [0x5d,0x41,0x35,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 2535415d <unknown> | ||
|
||
whilegt pn15.b, x13, x8, vlx4 // 00100101-00101000-01100001-10111111 | ||
// CHECK-INST: whilegt pn15.b, x13, x8, vlx4 | ||
// CHECK-ENCODING: [0xbf,0x61,0x28,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 252861bf <unknown> | ||
|
||
whilegt pn15.b, xzr, xzr, vlx4 // 00100101-00111111-01100011-11111111 | ||
// CHECK-INST: whilegt pn15.b, xzr, xzr, vlx4 | ||
// CHECK-ENCODING: [0xff,0x63,0x3f,0x25] | ||
// CHECK-ERROR: instruction requires: sme2 or sve2p1 | ||
// CHECK-UNKNOWN: 253f63ff <unknown> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
// RUN: not llvm-mc -triple=aarch64 -show-encoding -mattr=+sve2p1 2>&1 < %s | FileCheck %s | ||
|
||
// --------------------------------------------------------------------------// | ||
// Invalid Pattern | ||
|
||
whilehi pn8.b, x0, x0, vlx1 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: invalid operand | ||
// CHECK-NEXT: whilehi pn8.b, x0, x0, vlx1 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
whilehi pn8.b, x0, x0 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: too few operands for instruction | ||
// CHECK-NEXT: whilehi pn8.b, x0, x0 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
// --------------------------------------------------------------------------// | ||
// Invalid use of predicate without suffix | ||
|
||
whilehi pn8, x0, x0, vlx2 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid predicate register, expected PN in range pn8..pn15 with element suffix. | ||
// CHECK-NEXT: whilehi pn8, x0, x0, vlx2 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: | ||
|
||
// --------------------------------------------------------------------------// | ||
// Out of range Predicate register | ||
|
||
whilehi pn7.b, x0, x0, vlx2 | ||
// CHECK: [[@LINE-1]]:{{[0-9]+}}: error: Invalid predicate register, expected PN in range pn8..pn15 with element suffix. | ||
// CHECK-NEXT: whilehi pn7.b, x0, x0, vlx2 | ||
// CHECK-NOT: [[@LINE-1]]:{{[0-9]+}}: |
Oops, something went wrong.