diff options
author | Stephen Hines <srhines@google.com> | 2014-04-23 16:57:46 -0700 |
---|---|---|
committer | Stephen Hines <srhines@google.com> | 2014-04-24 15:53:16 -0700 |
commit | 36b56886974eae4f9c5ebc96befd3e7bfe5de338 (patch) | |
tree | e6cfb69fbbd937f450eeb83bfb83b9da3b01275a /test/MC/Sparc | |
parent | 69a8640022b04415ae9fac62f8ab090601d8f889 (diff) | |
download | external_llvm-36b56886974eae4f9c5ebc96befd3e7bfe5de338.zip external_llvm-36b56886974eae4f9c5ebc96befd3e7bfe5de338.tar.gz external_llvm-36b56886974eae4f9c5ebc96befd3e7bfe5de338.tar.bz2 |
Update to LLVM 3.5a.
Change-Id: Ifadecab779f128e62e430c2b4f6ddd84953ed617
Diffstat (limited to 'test/MC/Sparc')
-rw-r--r-- | test/MC/Sparc/lit.local.cfg | 4 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-alu-instructions.s | 128 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-atomic-instructions.s | 19 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-ctrl-instructions.s | 278 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-directive-xword.s | 10 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-directives.s | 19 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-fp-instructions.s | 140 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-mem-instructions.s | 58 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-nop-data.s | 11 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-pic.s | 49 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-relocations.s | 46 | ||||
-rw-r--r-- | test/MC/Sparc/sparc-vis.s | 4 | ||||
-rw-r--r-- | test/MC/Sparc/sparc64-alu-instructions.s | 38 | ||||
-rw-r--r-- | test/MC/Sparc/sparc64-ctrl-instructions.s | 1226 | ||||
-rw-r--r-- | test/MC/Sparc/sparcv8-instructions.s | 15 | ||||
-rw-r--r-- | test/MC/Sparc/sparcv9-instructions.s | 23 |
16 files changed, 2068 insertions, 0 deletions
diff --git a/test/MC/Sparc/lit.local.cfg b/test/MC/Sparc/lit.local.cfg new file mode 100644 index 0000000..4d344fa --- /dev/null +++ b/test/MC/Sparc/lit.local.cfg @@ -0,0 +1,4 @@ +targets = set(config.root.targets_to_build.split()) +if not 'Sparc' in targets: + config.unsupported = True + diff --git a/test/MC/Sparc/sparc-alu-instructions.s b/test/MC/Sparc/sparc-alu-instructions.s new file mode 100644 index 0000000..afebf64 --- /dev/null +++ b/test/MC/Sparc/sparc-alu-instructions.s @@ -0,0 +1,128 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s + + ! CHECK: add %g0, %g0, %g0 ! encoding: [0x80,0x00,0x00,0x00] + add %g0, %g0, %g0 + ! CHECK: add %g1, %g2, %g3 ! encoding: [0x86,0x00,0x40,0x02] + add %g1, %g2, %g3 + ! CHECK: add %o0, %o1, %l0 ! encoding: [0xa0,0x02,0x00,0x09] + add %r8, %r9, %l0 + ! CHECK: add %o0, 10, %l0 ! encoding: [0xa0,0x02,0x20,0x0a] + add %o0, 10, %l0 + + ! CHECK: addcc %g1, %g2, %g3 ! encoding: [0x86,0x80,0x40,0x02] + addcc %g1, %g2, %g3 + + ! CHECK: addxcc %g1, %g2, %g3 ! encoding: [0x86,0xc0,0x40,0x02] + addxcc %g1, %g2, %g3 + + ! CHECK: udiv %g1, %g2, %g3 ! encoding: [0x86,0x70,0x40,0x02] + udiv %g1, %g2, %g3 + + ! CHECK: sdiv %g1, %g2, %g3 ! encoding: [0x86,0x78,0x40,0x02] + sdiv %g1, %g2, %g3 + + ! CHECK: and %g1, %g2, %g3 ! encoding: [0x86,0x08,0x40,0x02] + and %g1, %g2, %g3 + ! CHECK: andn %g1, %g2, %g3 ! encoding: [0x86,0x28,0x40,0x02] + andn %g1, %g2, %g3 + ! CHECK: or %g1, %g2, %g3 ! encoding: [0x86,0x10,0x40,0x02] + or %g1, %g2, %g3 + ! CHECK: orn %g1, %g2, %g3 ! encoding: [0x86,0x30,0x40,0x02] + orn %g1, %g2, %g3 + ! CHECK: xor %g1, %g2, %g3 ! encoding: [0x86,0x18,0x40,0x02] + xor %g1, %g2, %g3 + ! CHECK: xnor %g1, %g2, %g3 ! encoding: [0x86,0x38,0x40,0x02] + xnor %g1, %g2, %g3 + + ! CHECK: umul %g1, %g2, %g3 ! encoding: [0x86,0x50,0x40,0x02] + umul %g1, %g2, %g3 + + ! CHECK: smul %g1, %g2, %g3 ! encoding: [0x86,0x58,0x40,0x02] + smul %g1, %g2, %g3 + + ! CHECK: nop ! encoding: [0x01,0x00,0x00,0x00] + nop + + ! CHECK: sethi 10, %l0 ! encoding: [0x21,0x00,0x00,0x0a] + sethi 10, %l0 + + ! CHECK: sll %g1, %g2, %g3 ! encoding: [0x87,0x28,0x40,0x02] + sll %g1, %g2, %g3 + ! CHECK: sll %g1, 31, %g3 ! encoding: [0x87,0x28,0x60,0x1f] + sll %g1, 31, %g3 + + ! CHECK: srl %g1, %g2, %g3 ! encoding: [0x87,0x30,0x40,0x02] + srl %g1, %g2, %g3 + ! CHECK: srl %g1, 31, %g3 ! encoding: [0x87,0x30,0x60,0x1f] + srl %g1, 31, %g3 + + ! CHECK: sra %g1, %g2, %g3 ! encoding: [0x87,0x38,0x40,0x02] + sra %g1, %g2, %g3 + ! CHECK: sra %g1, 31, %g3 ! encoding: [0x87,0x38,0x60,0x1f] + sra %g1, 31, %g3 + + ! CHECK: sub %g1, %g2, %g3 ! encoding: [0x86,0x20,0x40,0x02] + sub %g1, %g2, %g3 + ! CHECK: subcc %g1, %g2, %g3 ! encoding: [0x86,0xa0,0x40,0x02] + subcc %g1, %g2, %g3 + + ! CHECK: subxcc %g1, %g2, %g3 ! encoding: [0x86,0xe0,0x40,0x02] + subxcc %g1, %g2, %g3 + + ! CHECK: or %g0, %g1, %g3 ! encoding: [0x86,0x10,0x00,0x01] + mov %g1, %g3 + + ! CHECK: or %g0, 255, %g3 ! encoding: [0x86,0x10,0x20,0xff] + mov 0xff, %g3 + + ! CHECK: restore ! encoding: [0x81,0xe8,0x00,0x00] + restore %g0, %g0, %g0 + + ! CHECK: addx %g2, %g1, %g3 ! encoding: [0x86,0x40,0x80,0x01] + addx %g2, %g1, %g3 + + ! CHECK: subx %g2, %g1, %g3 ! encoding: [0x86,0x60,0x80,0x01] + subx %g2, %g1, %g3 + + ! CHECK: umulcc %g2, %g1, %g3 ! encoding: [0x86,0xd0,0x80,0x01] + umulcc %g2, %g1, %g3 + + ! CHECK: smulcc %g2, %g1, %g3 ! encoding: [0x86,0xd8,0x80,0x01] + smulcc %g2, %g1, %g3 + + ! CHECK: udivcc %g2, %g1, %g3 ! encoding: [0x86,0xf0,0x80,0x01] + udivcc %g2, %g1, %g3 + + ! CHECK: sdivcc %g2, %g1, %g3 ! encoding: [0x86,0xf8,0x80,0x01] + sdivcc %g2, %g1, %g3 + + ! CHECK: andcc %g2, %g1, %g3 ! encoding: [0x86,0x88,0x80,0x01] + andcc %g2, %g1, %g3 + + ! CHECK: andncc %g2, %g1, %g3 ! encoding: [0x86,0xa8,0x80,0x01] + andncc %g2, %g1, %g3 + + ! CHECK: orcc %g2, %g1, %g3 ! encoding: [0x86,0x90,0x80,0x01] + orcc %g2, %g1, %g3 + + ! CHECK: orncc %g2, %g1, %g3 ! encoding: [0x86,0xb0,0x80,0x01] + orncc %g2, %g1, %g3 + + ! CHECK: xorcc %g2, %g1, %g3 ! encoding: [0x86,0x98,0x80,0x01] + xorcc %g2, %g1, %g3 + + ! CHECK: xnorcc %g2, %g1, %g3 ! encoding: [0x86,0xb8,0x80,0x01] + xnorcc %g2, %g1, %g3 + + ! CHECK: taddcc %g2, %g1, %g3 ! encoding: [0x87,0x00,0x80,0x01] + taddcc %g2, %g1, %g3 + + ! CHECK: tsubcc %g2, %g1, %g3 ! encoding: [0x87,0x08,0x80,0x01] + tsubcc %g2, %g1, %g3 + + ! CHECK: taddcctv %g2, %g1, %g3 ! encoding: [0x87,0x10,0x80,0x01] + taddcctv %g2, %g1, %g3 + + ! CHECK: tsubcctv %g2, %g1, %g3 ! encoding: [0x87,0x18,0x80,0x01] + tsubcctv %g2, %g1, %g3 diff --git a/test/MC/Sparc/sparc-atomic-instructions.s b/test/MC/Sparc/sparc-atomic-instructions.s new file mode 100644 index 0000000..5c46067 --- /dev/null +++ b/test/MC/Sparc/sparc-atomic-instructions.s @@ -0,0 +1,19 @@ +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s + + ! CHECK: membar 15 ! encoding: [0x81,0x43,0xe0,0x0f] + membar 15 + + ! CHECK: stbar ! encoding: [0x81,0x43,0xc0,0x00] + stbar + + ! CHECK: swap [%i0+%l6], %o2 ! encoding: [0xd4,0x7e,0x00,0x16] + swap [%i0+%l6], %o2 + + ! CHECK: swap [%i0+32], %o2 ! encoding: [0xd4,0x7e,0x20,0x20] + swap [%i0+32], %o2 + + ! CHECK: cas [%i0], %l6, %o2 ! encoding: [0xd5,0xe6,0x10,0x16] + cas [%i0], %l6, %o2 + + ! CHECK: casx [%i0], %l6, %o2 ! encoding: [0xd5,0xf6,0x10,0x16] + casx [%i0], %l6, %o2 diff --git a/test/MC/Sparc/sparc-ctrl-instructions.s b/test/MC/Sparc/sparc-ctrl-instructions.s new file mode 100644 index 0000000..cf92e70 --- /dev/null +++ b/test/MC/Sparc/sparc-ctrl-instructions.s @@ -0,0 +1,278 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s + + ! CHECK: call foo ! encoding: [0b01AAAAAA,A,A,A] + ! CHECK: ! fixup A - offset: 0, value: foo, kind: fixup_sparc_call30 + call foo + + ! CHECK: call %g1+%i2 ! encoding: [0x9f,0xc0,0x40,0x1a] + call %g1 + %i2 + + ! CHECK: call %o1+8 ! encoding: [0x9f,0xc2,0x60,0x08] + call %o1 + 8 + + ! CHECK: call %g1 ! encoding: [0x9f,0xc0,0x60,0x00] + call %g1 + + ! CHECK: call %g1+%lo(sym) ! encoding: [0x9f,0xc0,0b011000AA,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10 + call %g1+%lo(sym) + + ! CHECK: jmp %g1+%i2 ! encoding: [0x81,0xc0,0x40,0x1a] + jmp %g1 + %i2 + + ! CHECK: jmp %o1+8 ! encoding: [0x81,0xc2,0x60,0x08] + jmp %o1 + 8 + + ! CHECK: jmp %g1 ! encoding: [0x81,0xc0,0x60,0x00] + jmp %g1 + + ! CHECK: jmp %g1+%lo(sym) ! encoding: [0x81,0xc0,0b011000AA,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10 + jmp %g1+%lo(sym) + + ! CHECK: jmpl %g1+%i2, %g2 ! encoding: [0x85,0xc0,0x40,0x1a] + jmpl %g1 + %i2, %g2 + + ! CHECK: jmpl %o1+8, %g2 ! encoding: [0x85,0xc2,0x60,0x08] + jmpl %o1 + 8, %g2 + + ! CHECK: jmpl %g1, %g2 ! encoding: [0x85,0xc0,0x60,0x00] + jmpl %g1, %g2 + + ! CHECK: jmpl %g1+%lo(sym), %g2 ! encoding: [0x85,0xc0,0b011000AA,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10 + jmpl %g1+%lo(sym), %g2 + + ! CHECK: ba .BB0 ! encoding: [0x10,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + ba .BB0 + + ! CHECK: bne .BB0 ! encoding: [0x12,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bne .BB0 + + ! CHECK: be .BB0 ! encoding: [0x02,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + be .BB0 + + ! CHECK: bg .BB0 ! encoding: [0x14,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bg .BB0 + + ! CHECK: ble .BB0 ! encoding: [0x04,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + ble .BB0 + + ! CHECK: bge .BB0 ! encoding: [0x16,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bge .BB0 + + ! CHECK: bl .BB0 ! encoding: [0x06,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bl .BB0 + + ! CHECK: bgu .BB0 ! encoding: [0x18,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bgu .BB0 + + ! CHECK: bleu .BB0 ! encoding: [0x08,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bleu .BB0 + + ! CHECK: bcc .BB0 ! encoding: [0x1a,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bcc .BB0 + + ! CHECK: bcs .BB0 ! encoding: [0x0a,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bcs .BB0 + + ! CHECK: bpos .BB0 ! encoding: [0x1c,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bpos .BB0 + + ! CHECK: bneg .BB0 ! encoding: [0x0c,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bneg .BB0 + + ! CHECK: bvc .BB0 ! encoding: [0x1e,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bvc .BB0 + + ! CHECK: bvs .BB0 ! encoding: [0x0e,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bvs .BB0 + + ! CHECK: fbu .BB0 ! encoding: [0x0f,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbu .BB0 + + ! CHECK: fbg .BB0 ! encoding: [0x0d,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbg .BB0 + ! CHECK: fbug .BB0 ! encoding: [0x0b,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbug .BB0 + + ! CHECK: fbl .BB0 ! encoding: [0x09,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbl .BB0 + + ! CHECK: fbul .BB0 ! encoding: [0x07,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbul .BB0 + + ! CHECK: fblg .BB0 ! encoding: [0x05,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fblg .BB0 + + ! CHECK: fbne .BB0 ! encoding: [0x03,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbne .BB0 + + ! CHECK: fbe .BB0 ! encoding: [0x13,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbe .BB0 + + ! CHECK: fbue .BB0 ! encoding: [0x15,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbue .BB0 + + ! CHECK: fbge .BB0 ! encoding: [0x17,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbge .BB0 + + ! CHECK: fbuge .BB0 ! encoding: [0x19,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbuge .BB0 + + ! CHECK: fble .BB0 ! encoding: [0x1b,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fble .BB0 + + ! CHECK: fbule .BB0 ! encoding: [0x1d,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbule .BB0 + + ! CHECK: fbo .BB0 ! encoding: [0x1f,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbo .BB0 + + ! CHECK: ba,a .BB0 ! encoding: [0x30,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + ba,a .BB0 + + ! CHECK: bne,a .BB0 ! encoding: [0x32,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bne,a .BB0 + + ! CHECK: be,a .BB0 ! encoding: [0x22,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + be,a .BB0 + + ! CHECK: bg,a .BB0 ! encoding: [0x34,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bg,a .BB0 + + ! CHECK: ble,a .BB0 ! encoding: [0x24,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + ble,a .BB0 + + ! CHECK: bge,a .BB0 ! encoding: [0x36,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bge,a .BB0 + + ! CHECK: bl,a .BB0 ! encoding: [0x26,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bl,a .BB0 + + ! CHECK: bgu,a .BB0 ! encoding: [0x38,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bgu,a .BB0 + + ! CHECK: bleu,a .BB0 ! encoding: [0x28,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bleu,a .BB0 + + ! CHECK: bcc,a .BB0 ! encoding: [0x3a,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bcc,a .BB0 + + ! CHECK: bcs,a .BB0 ! encoding: [0x2a,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bcs,a .BB0 + + ! CHECK: bpos,a .BB0 ! encoding: [0x3c,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bpos,a .BB0 + + ! CHECK: bneg,a .BB0 ! encoding: [0x2c,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bneg,a .BB0 + + ! CHECK: bvc,a .BB0 ! encoding: [0x3e,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bvc,a .BB0 + + ! CHECK: bvs,a .BB0 ! encoding: [0x2e,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + bvs,a .BB0 + + ! CHECK: fbu,a .BB0 ! encoding: [0x2f,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbu,a .BB0 + + ! CHECK: fbg,a .BB0 ! encoding: [0x2d,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbg,a .BB0 + ! CHECK: fbug,a .BB0 ! encoding: [0x2b,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbug,a .BB0 + + ! CHECK: fbl,a .BB0 ! encoding: [0x29,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbl,a .BB0 + + ! CHECK: fbul,a .BB0 ! encoding: [0x27,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbul,a .BB0 + + ! CHECK: fblg,a .BB0 ! encoding: [0x25,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fblg,a .BB0 + + ! CHECK: fbne,a .BB0 ! encoding: [0x23,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbne,a .BB0 + + ! CHECK: fbe,a .BB0 ! encoding: [0x33,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbe,a .BB0 + + ! CHECK: fbue,a .BB0 ! encoding: [0x35,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbue,a .BB0 + + ! CHECK: fbge,a .BB0 ! encoding: [0x37,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbge,a .BB0 + + ! CHECK: fbuge,a .BB0 ! encoding: [0x39,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbuge,a .BB0 + + ! CHECK: fble,a .BB0 ! encoding: [0x3b,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fble,a .BB0 + + ! CHECK: fbule,a .BB0 ! encoding: [0x3d,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbule,a .BB0 + + ! CHECK: fbo,a .BB0 ! encoding: [0x3f,0b10AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22 + fbo,a .BB0 + + ! CHECK: rett %i7+8 ! encoding: [0x81,0xcf,0xe0,0x08] + rett %i7 + 8 diff --git a/test/MC/Sparc/sparc-directive-xword.s b/test/MC/Sparc/sparc-directive-xword.s new file mode 100644 index 0000000..0c9e249 --- /dev/null +++ b/test/MC/Sparc/sparc-directive-xword.s @@ -0,0 +1,10 @@ +! RUN: not llvm-mc %s -arch=sparc -show-encoding 2>&1 | FileCheck %s --check-prefix=SPARC32 +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s --check-prefix=SPARC64 + + ! SPARC32: error: unknown directive + ! SPARC32-NEXT: .xword 65536 + ! SPARC32-NEXT: ^ + + ! SPARC64: .xword 65536 + .xword 65536 + diff --git a/test/MC/Sparc/sparc-directives.s b/test/MC/Sparc/sparc-directives.s new file mode 100644 index 0000000..9185e4b --- /dev/null +++ b/test/MC/Sparc/sparc-directives.s @@ -0,0 +1,19 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s --check-prefix=SPARC32 +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s --check-prefix=SPARC64 + + ! SPARC32: .byte 24 + ! SPARC64: .byte 24 + .byte 24 + + ! SPARC32: .half 1024 + ! SPARC64: .half 1024 + .half 1024 + + ! SPARC32: .word 65536 + ! SPARC64: .word 65536 + .word 65536 + + ! SPARC32: .word 65536 + ! SPARC64: .xword 65536 + .nword 65536 + diff --git a/test/MC/Sparc/sparc-fp-instructions.s b/test/MC/Sparc/sparc-fp-instructions.s new file mode 100644 index 0000000..fdeaa8c --- /dev/null +++ b/test/MC/Sparc/sparc-fp-instructions.s @@ -0,0 +1,140 @@ +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s + + ! CHECK: fitos %f0, %f4 ! encoding: [0x89,0xa0,0x18,0x80] + ! CHECK: fitod %f0, %f4 ! encoding: [0x89,0xa0,0x19,0x00] + ! CHECK: fitoq %f0, %f4 ! encoding: [0x89,0xa0,0x19,0x80] + fitos %f0, %f4 + fitod %f0, %f4 + fitoq %f0, %f4 + + ! CHECK: fstoi %f0, %f4 ! encoding: [0x89,0xa0,0x1a,0x20] + ! CHECK: fdtoi %f0, %f4 ! encoding: [0x89,0xa0,0x1a,0x40] + ! CHECK: fqtoi %f0, %f4 ! encoding: [0x89,0xa0,0x1a,0x60] + fstoi %f0, %f4 + fdtoi %f0, %f4 + fqtoi %f0, %f4 + + ! CHECK: fstod %f0, %f4 ! encoding: [0x89,0xa0,0x19,0x20] + ! CHECK: fstoq %f0, %f4 ! encoding: [0x89,0xa0,0x19,0xa0] + fstod %f0, %f4 + fstoq %f0, %f4 + + ! CHECK: fdtos %f0, %f4 ! encoding: [0x89,0xa0,0x18,0xc0] + ! CHECK: fdtoq %f0, %f4 ! encoding: [0x89,0xa0,0x19,0xc0] + fdtos %f0, %f4 + fdtoq %f0, %f4 + + ! CHECK: fqtos %f0, %f4 ! encoding: [0x89,0xa0,0x18,0xe0] + ! CHECK: fqtod %f0, %f4 ! encoding: [0x89,0xa0,0x19,0x60] + fqtos %f0, %f4 + fqtod %f0, %f4 + + ! CHECK: fmovs %f0, %f4 ! encoding: [0x89,0xa0,0x00,0x20] + ! CHECK: fmovd %f0, %f4 ! encoding: [0x89,0xa0,0x00,0x40] + ! CHECK: fmovq %f0, %f4 ! encoding: [0x89,0xa0,0x00,0x60] + fmovs %f0, %f4 + fmovd %f0, %f4 + fmovq %f0, %f4 + + ! CHECK: fnegs %f0, %f4 ! encoding: [0x89,0xa0,0x00,0xa0] + ! CHECK: fnegd %f0, %f4 ! encoding: [0x89,0xa0,0x00,0xc0] + ! CHECK: fnegq %f0, %f4 ! encoding: [0x89,0xa0,0x00,0xe0] + fnegs %f0, %f4 + fnegd %f0, %f4 + fnegq %f0, %f4 + + ! CHECK: fabss %f0, %f4 ! encoding: [0x89,0xa0,0x01,0x20] + ! CHECK: fabsd %f0, %f4 ! encoding: [0x89,0xa0,0x01,0x40] + ! CHECK: fabsq %f0, %f4 ! encoding: [0x89,0xa0,0x01,0x60] + fabss %f0, %f4 + fabsd %f0, %f4 + fabsq %f0, %f4 + + ! CHECK: fsqrts %f0, %f4 ! encoding: [0x89,0xa0,0x05,0x20] + ! CHECK: fsqrtd %f0, %f4 ! encoding: [0x89,0xa0,0x05,0x40] + ! CHECK: fsqrtq %f0, %f4 ! encoding: [0x89,0xa0,0x05,0x60] + fsqrts %f0, %f4 + fsqrtd %f0, %f4 + fsqrtq %f0, %f4 + + ! CHECK: fadds %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x08,0x24] + ! CHECK: faddd %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x08,0x44] + ! CHECK: faddq %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x08,0x64] + fadds %f0, %f4, %f8 + faddd %f0, %f4, %f8 + faddq %f0, %f4, %f8 + + ! make sure we can handle V9 double registers and their aliased quad registers. + ! CHECK: faddd %f32, %f34, %f62 ! encoding: [0xbf,0xa0,0x48,0x43] + ! CHECK: faddq %f32, %f36, %f60 ! encoding: [0xbb,0xa0,0x48,0x65] + faddd %f32, %f34, %f62 + faddq %f32, %f36, %f60 + + ! CHECK: fsubs %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x08,0xa4] + ! CHECK: fsubd %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x08,0xc4] + ! CHECK: fsubq %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x08,0xe4] + fsubs %f0, %f4, %f8 + fsubd %f0, %f4, %f8 + fsubq %f0, %f4, %f8 + + ! CHECK: fmuls %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x09,0x24] + ! CHECK: fmuld %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x09,0x44] + ! CHECK: fmulq %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x09,0x64] + fmuls %f0, %f4, %f8 + fmuld %f0, %f4, %f8 + fmulq %f0, %f4, %f8 + + ! CHECK: fsmuld %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x0d,0x24] + ! CHECK: fdmulq %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x0d,0xc4] + fsmuld %f0, %f4, %f8 + fdmulq %f0, %f4, %f8 + + ! CHECK: fdivs %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x09,0xa4] + ! CHECK: fdivd %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x09,0xc4] + ! CHECK: fdivq %f0, %f4, %f8 ! encoding: [0x91,0xa0,0x09,0xe4] + fdivs %f0, %f4, %f8 + fdivd %f0, %f4, %f8 + fdivq %f0, %f4, %f8 + + ! CHECK: fcmps %fcc0, %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0x24] + ! CHECK: fcmpd %fcc0, %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0x44] + ! CHECK: fcmpq %fcc0, %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0x64] + fcmps %f0, %f4 + fcmpd %f0, %f4 + fcmpq %f0, %f4 + + ! CHECK: fcmpes %fcc0, %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xa4] + ! CHECK: fcmped %fcc0, %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xc4] + ! CHECK: fcmpeq %fcc0, %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xe4] + fcmpes %f0, %f4 + fcmped %f0, %f4 + fcmpeq %f0, %f4 + + ! CHECK: fcmps %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x24] + ! CHECK: fcmpd %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x44] + ! CHECK: fcmpq %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0x64] + fcmps %fcc2, %f0, %f4 + fcmpd %fcc2, %f0, %f4 + fcmpq %fcc2, %f0, %f4 + + ! CHECK: fcmpes %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xa4] + ! CHECK: fcmped %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xc4] + ! CHECK: fcmpeq %fcc2, %f0, %f4 ! encoding: [0x85,0xa8,0x0a,0xe4] + fcmpes %fcc2, %f0, %f4 + fcmped %fcc2, %f0, %f4 + fcmpeq %fcc2, %f0, %f4 + + ! CHECK: fxtos %f0, %f4 ! encoding: [0x89,0xa0,0x10,0x80] + ! CHECK: fxtod %f0, %f4 ! encoding: [0x89,0xa0,0x11,0x00] + ! CHECK: fxtoq %f0, %f4 ! encoding: [0x89,0xa0,0x11,0x80] + fxtos %f0, %f4 + fxtod %f0, %f4 + fxtoq %f0, %f4 + + ! CHECK: fstox %f0, %f4 ! encoding: [0x89,0xa0,0x10,0x20] + ! CHECK: fdtox %f0, %f4 ! encoding: [0x89,0xa0,0x10,0x40] + ! CHECK: fqtox %f0, %f4 ! encoding: [0x89,0xa0,0x10,0x60] + fstox %f0, %f4 + fdtox %f0, %f4 + fqtox %f0, %f4 + diff --git a/test/MC/Sparc/sparc-mem-instructions.s b/test/MC/Sparc/sparc-mem-instructions.s new file mode 100644 index 0000000..e8eb593 --- /dev/null +++ b/test/MC/Sparc/sparc-mem-instructions.s @@ -0,0 +1,58 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s + + ! CHECK: ldsb [%i0+%l6], %o2 ! encoding: [0xd4,0x4e,0x00,0x16] + ldsb [%i0 + %l6], %o2 + ! CHECK: ldsb [%i0+32], %o2 ! encoding: [0xd4,0x4e,0x20,0x20] + ldsb [%i0 + 32], %o2 + ! CHECK: ldsb [%g1], %o4 ! encoding: [0xd8,0x48,0x60,0x00] + ldsb [%g1], %o4 + + ! CHECK: ldsh [%i0+%l6], %o2 ! encoding: [0xd4,0x56,0x00,0x16] + ldsh [%i0 + %l6], %o2 + ! CHECK: ldsh [%i0+32], %o2 ! encoding: [0xd4,0x56,0x20,0x20] + ldsh [%i0 + 32], %o2 + ! CHECK: ldsh [%g1], %o4 ! encoding: [0xd8,0x50,0x60,0x00] + ldsh [%g1], %o4 + + ! CHECK: ldub [%i0+%l6], %o2 ! encoding: [0xd4,0x0e,0x00,0x16] + ldub [%i0 + %l6], %o2 + ! CHECK: ldub [%i0+32], %o2 ! encoding: [0xd4,0x0e,0x20,0x20] + ldub [%i0 + 32], %o2 + ! CHECK: ldub [%g1], %o2 ! encoding: [0xd4,0x08,0x60,0x00] + ldub [%g1], %o2 + + ! CHECK: lduh [%i0+%l6], %o2 ! encoding: [0xd4,0x16,0x00,0x16] + lduh [%i0 + %l6], %o2 + ! CHECK: lduh [%i0+32], %o2 ! encoding: [0xd4,0x16,0x20,0x20] + lduh [%i0 + 32], %o2 + ! CHECK: lduh [%g1], %o2 ! encoding: [0xd4,0x10,0x60,0x00] + lduh [%g1], %o2 + + ! CHECK: ld [%i0+%l6], %o2 ! encoding: [0xd4,0x06,0x00,0x16] + ld [%i0 + %l6], %o2 + ! CHECK: ld [%i0+32], %o2 ! encoding: [0xd4,0x06,0x20,0x20] + ld [%i0 + 32], %o2 + ! CHECK: ld [%g1], %o2 ! encoding: [0xd4,0x00,0x60,0x00] + ld [%g1], %o2 + + ! CHECK: stb %o2, [%i0+%l6] ! encoding: [0xd4,0x2e,0x00,0x16] + stb %o2, [%i0 + %l6] + ! CHECK: stb %o2, [%i0+32] ! encoding: [0xd4,0x2e,0x20,0x20] + stb %o2, [%i0 + 32] + ! CHECK: stb %o2, [%g1] ! encoding: [0xd4,0x28,0x60,0x00] + stb %o2, [%g1] + + ! CHECK: sth %o2, [%i0+%l6] ! encoding: [0xd4,0x36,0x00,0x16] + sth %o2, [%i0 + %l6] + ! CHECK: sth %o2, [%i0+32] ! encoding: [0xd4,0x36,0x20,0x20] + sth %o2, [%i0 + 32] + ! CHECK: sth %o2, [%g1] ! encoding: [0xd4,0x30,0x60,0x00] + sth %o2, [%g1] + + ! CHECK: st %o2, [%i0+%l6] ! encoding: [0xd4,0x26,0x00,0x16] + st %o2, [%i0 + %l6] + ! CHECK: st %o2, [%i0+32] ! encoding: [0xd4,0x26,0x20,0x20] + st %o2, [%i0 + 32] + ! CHECK: st %o2, [%g1] ! encoding: [0xd4,0x20,0x60,0x00] + st %o2, [%g1] diff --git a/test/MC/Sparc/sparc-nop-data.s b/test/MC/Sparc/sparc-nop-data.s new file mode 100644 index 0000000..1538505 --- /dev/null +++ b/test/MC/Sparc/sparc-nop-data.s @@ -0,0 +1,11 @@ +! RUN: llvm-mc %s -arch=sparc -filetype=obj | llvm-readobj -s -sd | FileCheck %s +! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -s -sd | FileCheck %s + +! CHECK: 0000: BA1F401D 01000000 01000000 01000000 +! CHECK: 0010: BA1F401D + +foo: + xor %i5, %i5, %i5 + .align 16 + xor %i5, %i5, %i5 + diff --git a/test/MC/Sparc/sparc-pic.s b/test/MC/Sparc/sparc-pic.s new file mode 100644 index 0000000..5a34d30 --- /dev/null +++ b/test/MC/Sparc/sparc-pic.s @@ -0,0 +1,49 @@ +! RUN: llvm-mc %s -arch=sparcv9 --relocation-model=pic -filetype=obj | llvm-readobj -r | FileCheck %s + + +! CHECK: Relocations [ +! CHECK-NOT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 .text 0xC +! CHECK: 0x{{[0-9,A-F]+}} R_SPARC_PC22 _GLOBAL_OFFSET_TABLE_ 0x4 +! CHECK-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x8 +! CHECK-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0 +! CHECK-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0 +! CHECK-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 bar 0x0 +! CHECK: ] + + .text + .globl foo + .align 4 + .type foo,@function +foo: + .cfi_startproc + save %sp, -176, %sp + .cfi_def_cfa_register %fp + .cfi_window_save + .cfi_register 15, 31 +.Ltmp4: + call .Ltmp5 +.Ltmp6: + sethi %hi(_GLOBAL_OFFSET_TABLE_+(.Ltmp6-.Ltmp4)), %i1 +.Ltmp5: + or %i1, %lo(_GLOBAL_OFFSET_TABLE_+(.Ltmp5-.Ltmp4)), %i1 + add %i1, %o7, %i1 + sethi %hi(AGlobalVar), %i2 + add %i2, %lo(AGlobalVar), %i2 + ldx [%i1+%i2], %i1 + ldx [%i1], %i1 + call bar + add %i0, %i1, %o0 + ret + restore %g0, %o0, %o0 +.Ltmp7: + .size foo, .Ltmp7-foo + .cfi_endproc + + .type AGlobalVar,@object ! @AGlobalVar + .section .bss,#alloc,#write + .globl AGlobalVar + .align 8 +AGlobalVar: + .xword 0 ! 0x0 + .size AGlobalVar, 8 + diff --git a/test/MC/Sparc/sparc-relocations.s b/test/MC/Sparc/sparc-relocations.s new file mode 100644 index 0000000..a5b7baf --- /dev/null +++ b/test/MC/Sparc/sparc-relocations.s @@ -0,0 +1,46 @@ +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s +! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -r | FileCheck %s --check-prefix=CHECK-OBJ + + ! CHECK-OBJ: Format: ELF64-sparc + ! CHECK-OBJ: Relocations [ + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_WDISP30 foo + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_LO10 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HI22 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_H44 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_M44 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_L44 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HH22 sym + ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HM10 sym + ! CHECK-ELF: ] + + ! CHECK: call foo ! encoding: [0b01AAAAAA,A,A,A] + ! CHECK: ! fixup A - offset: 0, value: foo, kind: fixup_sparc_call30 + call foo + + ! CHECK: or %g1, %lo(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A] + ! CHECK-NEXT ! fixup A - offset: 0, value: %lo(sym), kind: fixup_sparc_lo10 + or %g1, %lo(sym), %g3 + + ! CHECK: sethi %hi(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: %hi(sym), kind: fixup_sparc_hi22 + sethi %hi(sym), %l0 + + ! CHECK: sethi %h44(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: %h44(sym), kind: fixup_sparc_h44 + sethi %h44(sym), %l0 + + ! CHECK: or %g1, %m44(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A] + ! CHECK-NEXT ! fixup A - offset: 0, value: %m44(sym), kind: fixup_sparc_m44 + or %g1, %m44(sym), %g3 + + ! CHECK: or %g1, %l44(sym), %g3 ! encoding: [0x86,0x10,0b0110AAAA,A] + ! CHECK-NEXT ! fixup A - offset: 0, value: %l44(sym), kind: fixup_sparc_l44 + or %g1, %l44(sym), %g3 + + ! CHECK: sethi %hh(sym), %l0 ! encoding: [0x21,0b00AAAAAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: %hh(sym), kind: fixup_sparc_hh + sethi %hh(sym), %l0 + + ! CHECK: or %g1, %hm(sym), %g3 ! encoding: [0x86,0x10,0b011000AA,A] + ! CHECK-NEXT ! fixup A - offset: 0, value: %hm(sym), kind: fixup_sparc_hm + or %g1, %hm(sym), %g3 diff --git a/test/MC/Sparc/sparc-vis.s b/test/MC/Sparc/sparc-vis.s new file mode 100644 index 0000000..11ca564 --- /dev/null +++ b/test/MC/Sparc/sparc-vis.s @@ -0,0 +1,4 @@ +! RUN: llvm-mc %s -arch=sparcv9 -mcpu=niagara -show-encoding | FileCheck %s + + ! CHECK: fzeros %f31 ! encoding: [0xbf,0xb0,0x0c,0x20] + fzeros %f31 diff --git a/test/MC/Sparc/sparc64-alu-instructions.s b/test/MC/Sparc/sparc64-alu-instructions.s new file mode 100644 index 0000000..d4acea4 --- /dev/null +++ b/test/MC/Sparc/sparc64-alu-instructions.s @@ -0,0 +1,38 @@ +! RUN: llvm-mc %s -triple=sparc64-unknown-linux-gnu -show-encoding | FileCheck %s + + ! CHECK: sllx %g1, %i2, %i0 ! encoding: [0xb1,0x28,0x50,0x1a] + sllx %g1, %i2, %i0 + + ! CHECK: sllx %g1, 63, %i0 ! encoding: [0xb1,0x28,0x70,0x3f] + sllx %g1, 63, %i0 + + ! CHECK: srlx %g1, %i2, %i0 ! encoding: [0xb1,0x30,0x50,0x1a] + srlx %g1, %i2, %i0 + + ! CHECK: srlx %g1, 63, %i0 ! encoding: [0xb1,0x30,0x70,0x3f] + srlx %g1, 63, %i0 + + ! CHECK: srax %g1, %i2, %i0 ! encoding: [0xb1,0x38,0x50,0x1a] + srax %g1, %i2, %i0 + + ! CHECK: srax %g1, 63, %i0 ! encoding: [0xb1,0x38,0x70,0x3f] + srax %g1, 63, %i0 + + ! CHECK: mulx %g1, %i2, %i0 ! encoding: [0xb0,0x48,0x40,0x1a] + mulx %g1, %i2, %i0 + + ! CHECK: mulx %g1, 63, %i0 ! encoding: [0xb0,0x48,0x60,0x3f] + mulx %g1, 63, %i0 + + ! CHECK: sdivx %g1, %i2, %i0 ! encoding: [0xb1,0x68,0x40,0x1a] + sdivx %g1, %i2, %i0 + + ! CHECK: sdivx %g1, 63, %i0 ! encoding: [0xb1,0x68,0x60,0x3f] + sdivx %g1, 63, %i0 + + ! CHECK: udivx %g1, %i2, %i0 ! encoding: [0xb0,0x68,0x40,0x1a] + udivx %g1, %i2, %i0 + + ! CHECK: udivx %g1, 63, %i0 ! encoding: [0xb0,0x68,0x60,0x3f] + udivx %g1, 63, %i0 + diff --git a/test/MC/Sparc/sparc64-ctrl-instructions.s b/test/MC/Sparc/sparc64-ctrl-instructions.s new file mode 100644 index 0000000..65bca29 --- /dev/null +++ b/test/MC/Sparc/sparc64-ctrl-instructions.s @@ -0,0 +1,1226 @@ +! RUN: llvm-mc %s -triple=sparc64-unknown-linux-gnu -show-encoding | FileCheck %s + + + ! CHECK: bne %xcc, .BB0 ! encoding: [0x12,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne %xcc, .BB0 + + ! CHECK: be %xcc, .BB0 ! encoding: [0x02,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be %xcc, .BB0 + + ! CHECK: bg %xcc, .BB0 ! encoding: [0x14,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg %xcc, .BB0 + + ! CHECK: ble %xcc, .BB0 ! encoding: [0x04,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble %xcc, .BB0 + + ! CHECK: bge %xcc, .BB0 ! encoding: [0x16,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge %xcc, .BB0 + + ! CHECK: bl %xcc, .BB0 ! encoding: [0x06,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl %xcc, .BB0 + + ! CHECK: bgu %xcc, .BB0 ! encoding: [0x18,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu %xcc, .BB0 + + ! CHECK: bleu %xcc, .BB0 ! encoding: [0x08,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu %xcc, .BB0 + + ! CHECK: bcc %xcc, .BB0 ! encoding: [0x1a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc %xcc, .BB0 + + ! CHECK: bcs %xcc, .BB0 ! encoding: [0x0a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs %xcc, .BB0 + + ! CHECK: bpos %xcc, .BB0 ! encoding: [0x1c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos %xcc, .BB0 + + ! CHECK: bneg %xcc, .BB0 ! encoding: [0x0c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg %xcc, .BB0 + + ! CHECK: bvc %xcc, .BB0 ! encoding: [0x1e,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc %xcc, .BB0 + + ! CHECK: bvs %xcc, .BB0 ! encoding: [0x0e,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs %xcc, .BB0 + + + ! CHECK: movne %icc, %g1, %g2 ! encoding: [0x85,0x66,0x40,0x01] + ! CHECK: move %icc, %g1, %g2 ! encoding: [0x85,0x64,0x40,0x01] + ! CHECK: movg %icc, %g1, %g2 ! encoding: [0x85,0x66,0x80,0x01] + ! CHECK: movle %icc, %g1, %g2 ! encoding: [0x85,0x64,0x80,0x01] + ! CHECK: movge %icc, %g1, %g2 ! encoding: [0x85,0x66,0xc0,0x01] + ! CHECK: movl %icc, %g1, %g2 ! encoding: [0x85,0x64,0xc0,0x01] + ! CHECK: movgu %icc, %g1, %g2 ! encoding: [0x85,0x67,0x00,0x01] + ! CHECK: movleu %icc, %g1, %g2 ! encoding: [0x85,0x65,0x00,0x01] + ! CHECK: movcc %icc, %g1, %g2 ! encoding: [0x85,0x67,0x40,0x01] + ! CHECK: movcs %icc, %g1, %g2 ! encoding: [0x85,0x65,0x40,0x01] + ! CHECK: movpos %icc, %g1, %g2 ! encoding: [0x85,0x67,0x80,0x01] + ! CHECK: movneg %icc, %g1, %g2 ! encoding: [0x85,0x65,0x80,0x01] + ! CHECK: movvc %icc, %g1, %g2 ! encoding: [0x85,0x67,0xc0,0x01] + ! CHECK: movvs %icc, %g1, %g2 ! encoding: [0x85,0x65,0xc0,0x01] + movne %icc, %g1, %g2 + move %icc, %g1, %g2 + movg %icc, %g1, %g2 + movle %icc, %g1, %g2 + movge %icc, %g1, %g2 + movl %icc, %g1, %g2 + movgu %icc, %g1, %g2 + movleu %icc, %g1, %g2 + movcc %icc, %g1, %g2 + movcs %icc, %g1, %g2 + movpos %icc, %g1, %g2 + movneg %icc, %g1, %g2 + movvc %icc, %g1, %g2 + movvs %icc, %g1, %g2 + + ! CHECK: movne %xcc, %g1, %g2 ! encoding: [0x85,0x66,0x50,0x01] + ! CHECK: move %xcc, %g1, %g2 ! encoding: [0x85,0x64,0x50,0x01] + ! CHECK: movg %xcc, %g1, %g2 ! encoding: [0x85,0x66,0x90,0x01] + ! CHECK: movle %xcc, %g1, %g2 ! encoding: [0x85,0x64,0x90,0x01] + ! CHECK: movge %xcc, %g1, %g2 ! encoding: [0x85,0x66,0xd0,0x01] + ! CHECK: movl %xcc, %g1, %g2 ! encoding: [0x85,0x64,0xd0,0x01] + ! CHECK: movgu %xcc, %g1, %g2 ! encoding: [0x85,0x67,0x10,0x01] + ! CHECK: movleu %xcc, %g1, %g2 ! encoding: [0x85,0x65,0x10,0x01] + ! CHECK: movcc %xcc, %g1, %g2 ! encoding: [0x85,0x67,0x50,0x01] + ! CHECK: movcs %xcc, %g1, %g2 ! encoding: [0x85,0x65,0x50,0x01] + ! CHECK: movpos %xcc, %g1, %g2 ! encoding: [0x85,0x67,0x90,0x01] + ! CHECK: movneg %xcc, %g1, %g2 ! encoding: [0x85,0x65,0x90,0x01] + ! CHECK: movvc %xcc, %g1, %g2 ! encoding: [0x85,0x67,0xd0,0x01] + ! CHECK: movvs %xcc, %g1, %g2 ! encoding: [0x85,0x65,0xd0,0x01] + movne %xcc, %g1, %g2 + move %xcc, %g1, %g2 + movg %xcc, %g1, %g2 + movle %xcc, %g1, %g2 + movge %xcc, %g1, %g2 + movl %xcc, %g1, %g2 + movgu %xcc, %g1, %g2 + movleu %xcc, %g1, %g2 + movcc %xcc, %g1, %g2 + movcs %xcc, %g1, %g2 + movpos %xcc, %g1, %g2 + movneg %xcc, %g1, %g2 + movvc %xcc, %g1, %g2 + movvs %xcc, %g1, %g2 + + ! CHECK: movu %fcc0, %g1, %g2 ! encoding: [0x85,0x61,0xc0,0x01] + ! CHECK: movg %fcc0, %g1, %g2 ! encoding: [0x85,0x61,0x80,0x01] + ! CHECK: movug %fcc0, %g1, %g2 ! encoding: [0x85,0x61,0x40,0x01] + ! CHECK: movl %fcc0, %g1, %g2 ! encoding: [0x85,0x61,0x00,0x01] + ! CHECK: movul %fcc0, %g1, %g2 ! encoding: [0x85,0x60,0xc0,0x01] + ! CHECK: movlg %fcc0, %g1, %g2 ! encoding: [0x85,0x60,0x80,0x01] + ! CHECK: movne %fcc0, %g1, %g2 ! encoding: [0x85,0x60,0x40,0x01] + ! CHECK: move %fcc0, %g1, %g2 ! encoding: [0x85,0x62,0x40,0x01] + ! CHECK: movue %fcc0, %g1, %g2 ! encoding: [0x85,0x62,0x80,0x01] + ! CHECK: movge %fcc0, %g1, %g2 ! encoding: [0x85,0x62,0xc0,0x01] + ! CHECK: movuge %fcc0, %g1, %g2 ! encoding: [0x85,0x63,0x00,0x01] + ! CHECK: movle %fcc0, %g1, %g2 ! encoding: [0x85,0x63,0x40,0x01] + ! CHECK: movule %fcc0, %g1, %g2 ! encoding: [0x85,0x63,0x80,0x01] + ! CHECK: movo %fcc0, %g1, %g2 ! encoding: [0x85,0x63,0xc0,0x01] + movu %fcc0, %g1, %g2 + movg %fcc0, %g1, %g2 + movug %fcc0, %g1, %g2 + movl %fcc0, %g1, %g2 + movul %fcc0, %g1, %g2 + movlg %fcc0, %g1, %g2 + movne %fcc0, %g1, %g2 + move %fcc0, %g1, %g2 + movue %fcc0, %g1, %g2 + movge %fcc0, %g1, %g2 + movuge %fcc0, %g1, %g2 + movle %fcc0, %g1, %g2 + movule %fcc0, %g1, %g2 + movo %fcc0, %g1, %g2 + + + ! CHECK: fmovsne %icc, %f1, %f2 ! encoding: [0x85,0xaa,0x60,0x21] + ! CHECK: fmovse %icc, %f1, %f2 ! encoding: [0x85,0xa8,0x60,0x21] + ! CHECK: fmovsg %icc, %f1, %f2 ! encoding: [0x85,0xaa,0xa0,0x21] + ! CHECK: fmovsle %icc, %f1, %f2 ! encoding: [0x85,0xa8,0xa0,0x21] + ! CHECK: fmovsge %icc, %f1, %f2 ! encoding: [0x85,0xaa,0xe0,0x21] + ! CHECK: fmovsl %icc, %f1, %f2 ! encoding: [0x85,0xa8,0xe0,0x21] + ! CHECK: fmovsgu %icc, %f1, %f2 ! encoding: [0x85,0xab,0x20,0x21] + ! CHECK: fmovsleu %icc, %f1, %f2 ! encoding: [0x85,0xa9,0x20,0x21] + ! CHECK: fmovscc %icc, %f1, %f2 ! encoding: [0x85,0xab,0x60,0x21] + ! CHECK: fmovscs %icc, %f1, %f2 ! encoding: [0x85,0xa9,0x60,0x21] + ! CHECK: fmovspos %icc, %f1, %f2 ! encoding: [0x85,0xab,0xa0,0x21] + ! CHECK: fmovsneg %icc, %f1, %f2 ! encoding: [0x85,0xa9,0xa0,0x21] + ! CHECK: fmovsvc %icc, %f1, %f2 ! encoding: [0x85,0xab,0xe0,0x21] + ! CHECK: fmovsvs %icc, %f1, %f2 ! encoding: [0x85,0xa9,0xe0,0x21] + fmovsne %icc, %f1, %f2 + fmovse %icc, %f1, %f2 + fmovsg %icc, %f1, %f2 + fmovsle %icc, %f1, %f2 + fmovsge %icc, %f1, %f2 + fmovsl %icc, %f1, %f2 + fmovsgu %icc, %f1, %f2 + fmovsleu %icc, %f1, %f2 + fmovscc %icc, %f1, %f2 + fmovscs %icc, %f1, %f2 + fmovspos %icc, %f1, %f2 + fmovsneg %icc, %f1, %f2 + fmovsvc %icc, %f1, %f2 + fmovsvs %icc, %f1, %f2 + + ! CHECK: fmovsne %xcc, %f1, %f2 ! encoding: [0x85,0xaa,0x70,0x21] + ! CHECK: fmovse %xcc, %f1, %f2 ! encoding: [0x85,0xa8,0x70,0x21] + ! CHECK: fmovsg %xcc, %f1, %f2 ! encoding: [0x85,0xaa,0xb0,0x21] + ! CHECK: fmovsle %xcc, %f1, %f2 ! encoding: [0x85,0xa8,0xb0,0x21] + ! CHECK: fmovsge %xcc, %f1, %f2 ! encoding: [0x85,0xaa,0xf0,0x21] + ! CHECK: fmovsl %xcc, %f1, %f2 ! encoding: [0x85,0xa8,0xf0,0x21] + ! CHECK: fmovsgu %xcc, %f1, %f2 ! encoding: [0x85,0xab,0x30,0x21] + ! CHECK: fmovsleu %xcc, %f1, %f2 ! encoding: [0x85,0xa9,0x30,0x21] + ! CHECK: fmovscc %xcc, %f1, %f2 ! encoding: [0x85,0xab,0x70,0x21] + ! CHECK: fmovscs %xcc, %f1, %f2 ! encoding: [0x85,0xa9,0x70,0x21] + ! CHECK: fmovspos %xcc, %f1, %f2 ! encoding: [0x85,0xab,0xb0,0x21] + ! CHECK: fmovsneg %xcc, %f1, %f2 ! encoding: [0x85,0xa9,0xb0,0x21] + ! CHECK: fmovsvc %xcc, %f1, %f2 ! encoding: [0x85,0xab,0xf0,0x21] + ! CHECK: fmovsvs %xcc, %f1, %f2 ! encoding: [0x85,0xa9,0xf0,0x21] + fmovsne %xcc, %f1, %f2 + fmovse %xcc, %f1, %f2 + fmovsg %xcc, %f1, %f2 + fmovsle %xcc, %f1, %f2 + fmovsge %xcc, %f1, %f2 + fmovsl %xcc, %f1, %f2 + fmovsgu %xcc, %f1, %f2 + fmovsleu %xcc, %f1, %f2 + fmovscc %xcc, %f1, %f2 + fmovscs %xcc, %f1, %f2 + fmovspos %xcc, %f1, %f2 + fmovsneg %xcc, %f1, %f2 + fmovsvc %xcc, %f1, %f2 + fmovsvs %xcc, %f1, %f2 + + ! CHECK: fmovsu %fcc0, %f1, %f2 ! encoding: [0x85,0xa9,0xc0,0x21] + ! CHECK: fmovsg %fcc0, %f1, %f2 ! encoding: [0x85,0xa9,0x80,0x21] + ! CHECK: fmovsug %fcc0, %f1, %f2 ! encoding: [0x85,0xa9,0x40,0x21] + ! CHECK: fmovsl %fcc0, %f1, %f2 ! encoding: [0x85,0xa9,0x00,0x21] + ! CHECK: fmovsul %fcc0, %f1, %f2 ! encoding: [0x85,0xa8,0xc0,0x21] + ! CHECK: fmovslg %fcc0, %f1, %f2 ! encoding: [0x85,0xa8,0x80,0x21] + ! CHECK: fmovsne %fcc0, %f1, %f2 ! encoding: [0x85,0xa8,0x40,0x21] + ! CHECK: fmovse %fcc0, %f1, %f2 ! encoding: [0x85,0xaa,0x40,0x21] + ! CHECK: fmovsue %fcc0, %f1, %f2 ! encoding: [0x85,0xaa,0x80,0x21] + ! CHECK: fmovsge %fcc0, %f1, %f2 ! encoding: [0x85,0xaa,0xc0,0x21] + ! CHECK: fmovsuge %fcc0, %f1, %f2 ! encoding: [0x85,0xab,0x00,0x21] + ! CHECK: fmovsle %fcc0, %f1, %f2 ! encoding: [0x85,0xab,0x40,0x21] + ! CHECK: fmovsule %fcc0, %f1, %f2 ! encoding: [0x85,0xab,0x80,0x21] + ! CHECK: fmovso %fcc0, %f1, %f2 ! encoding: [0x85,0xab,0xc0,0x21] + fmovsu %fcc0, %f1, %f2 + fmovsg %fcc0, %f1, %f2 + fmovsug %fcc0, %f1, %f2 + fmovsl %fcc0, %f1, %f2 + fmovsul %fcc0, %f1, %f2 + fmovslg %fcc0, %f1, %f2 + fmovsne %fcc0, %f1, %f2 + fmovse %fcc0, %f1, %f2 + fmovsue %fcc0, %f1, %f2 + fmovsge %fcc0, %f1, %f2 + fmovsuge %fcc0, %f1, %f2 + fmovsle %fcc0, %f1, %f2 + fmovsule %fcc0, %f1, %f2 + fmovso %fcc0, %f1, %f2 + + ! CHECK: bne,a %icc, .BB0 ! encoding: [0x32,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,a %icc, .BB0 + + ! CHECK: be,a %icc, .BB0 ! encoding: [0x22,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,a %icc, .BB0 + + ! CHECK: bg,a %icc, .BB0 ! encoding: [0x34,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,a %icc, .BB0 + + ! CHECK: ble,a %icc, .BB0 ! encoding: [0x24,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,a %icc, .BB0 + + ! CHECK: bge,a %icc, .BB0 ! encoding: [0x36,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,a %icc, .BB0 + + ! CHECK: bl,a %icc, .BB0 ! encoding: [0x26,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,a %icc, .BB0 + + ! CHECK: bgu,a %icc, .BB0 ! encoding: [0x38,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,a %icc, .BB0 + + ! CHECK: bleu,a %icc, .BB0 ! encoding: [0x28,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,a %icc, .BB0 + + ! CHECK: bcc,a %icc, .BB0 ! encoding: [0x3a,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,a %icc, .BB0 + + ! CHECK: bcs,a %icc, .BB0 ! encoding: [0x2a,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,a %icc, .BB0 + + ! CHECK: bpos,a %icc, .BB0 ! encoding: [0x3c,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,a %icc, .BB0 + + ! CHECK: bneg,a %icc, .BB0 ! encoding: [0x2c,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,a %icc, .BB0 + + ! CHECK: bvc,a %icc, .BB0 ! encoding: [0x3e,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,a %icc, .BB0 + + ! CHECK: bvs,a %icc, .BB0 ! encoding: [0x2e,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,a %icc, .BB0 + + ! CHECK: bne,pn %icc, .BB0 ! encoding: [0x12,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,pn %icc, .BB0 + + ! CHECK: be,pn %icc, .BB0 ! encoding: [0x02,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,pn %icc, .BB0 + + ! CHECK: bg,pn %icc, .BB0 ! encoding: [0x14,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,pn %icc, .BB0 + + ! CHECK: ble,pn %icc, .BB0 ! encoding: [0x04,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,pn %icc, .BB0 + + ! CHECK: bge,pn %icc, .BB0 ! encoding: [0x16,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,pn %icc, .BB0 + + ! CHECK: bl,pn %icc, .BB0 ! encoding: [0x06,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,pn %icc, .BB0 + + ! CHECK: bgu,pn %icc, .BB0 ! encoding: [0x18,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,pn %icc, .BB0 + + ! CHECK: bleu,pn %icc, .BB0 ! encoding: [0x08,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,pn %icc, .BB0 + + ! CHECK: bcc,pn %icc, .BB0 ! encoding: [0x1a,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,pn %icc, .BB0 + + ! CHECK: bcs,pn %icc, .BB0 ! encoding: [0x0a,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,pn %icc, .BB0 + + ! CHECK: bpos,pn %icc, .BB0 ! encoding: [0x1c,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,pn %icc, .BB0 + + ! CHECK: bneg,pn %icc, .BB0 ! encoding: [0x0c,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,pn %icc, .BB0 + + ! CHECK: bvc,pn %icc, .BB0 ! encoding: [0x1e,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,pn %icc, .BB0 + + ! CHECK: bvs,pn %icc, .BB0 ! encoding: [0x0e,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,pn %icc, .BB0 + + ! CHECK: bne,a,pn %icc, .BB0 ! encoding: [0x32,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,a,pn %icc, .BB0 + + ! CHECK: be,a,pn %icc, .BB0 ! encoding: [0x22,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,a,pn %icc, .BB0 + + ! CHECK: bg,a,pn %icc, .BB0 ! encoding: [0x34,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,a,pn %icc, .BB0 + + ! CHECK: ble,a,pn %icc, .BB0 ! encoding: [0x24,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,a,pn %icc, .BB0 + + ! CHECK: bge,a,pn %icc, .BB0 ! encoding: [0x36,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,a,pn %icc, .BB0 + + ! CHECK: bl,a,pn %icc, .BB0 ! encoding: [0x26,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,a,pn %icc, .BB0 + + ! CHECK: bgu,a,pn %icc, .BB0 ! encoding: [0x38,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,a,pn %icc, .BB0 + + ! CHECK: bleu,a,pn %icc, .BB0 ! encoding: [0x28,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,a,pn %icc, .BB0 + + ! CHECK: bcc,a,pn %icc, .BB0 ! encoding: [0x3a,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,a,pn %icc, .BB0 + + ! CHECK: bcs,a,pn %icc, .BB0 ! encoding: [0x2a,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,a,pn %icc, .BB0 + + ! CHECK: bpos,a,pn %icc, .BB0 ! encoding: [0x3c,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,a,pn %icc, .BB0 + + ! CHECK: bneg,a,pn %icc, .BB0 ! encoding: [0x2c,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,a,pn %icc, .BB0 + + ! CHECK: bvc,a,pn %icc, .BB0 ! encoding: [0x3e,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,a,pn %icc, .BB0 + + ! CHECK: bvs,a,pn %icc, .BB0 ! encoding: [0x2e,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,a,pn %icc, .BB0 + + ! CHECK: bne %icc, .BB0 ! encoding: [0x12,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,pt %icc, .BB0 + + ! CHECK: be %icc, .BB0 ! encoding: [0x02,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,pt %icc, .BB0 + + ! CHECK: bg %icc, .BB0 ! encoding: [0x14,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,pt %icc, .BB0 + + ! CHECK: ble %icc, .BB0 ! encoding: [0x04,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,pt %icc, .BB0 + + ! CHECK: bge %icc, .BB0 ! encoding: [0x16,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,pt %icc, .BB0 + + ! CHECK: bl %icc, .BB0 ! encoding: [0x06,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,pt %icc, .BB0 + + ! CHECK: bgu %icc, .BB0 ! encoding: [0x18,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,pt %icc, .BB0 + + ! CHECK: bleu %icc, .BB0 ! encoding: [0x08,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,pt %icc, .BB0 + + ! CHECK: bcc %icc, .BB0 ! encoding: [0x1a,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,pt %icc, .BB0 + + ! CHECK: bcs %icc, .BB0 ! encoding: [0x0a,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,pt %icc, .BB0 + + ! CHECK: bpos %icc, .BB0 ! encoding: [0x1c,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,pt %icc, .BB0 + + ! CHECK: bneg %icc, .BB0 ! encoding: [0x0c,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,pt %icc, .BB0 + + ! CHECK: bvc %icc, .BB0 ! encoding: [0x1e,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,pt %icc, .BB0 + + ! CHECK: bvs %icc, .BB0 ! encoding: [0x0e,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,pt %icc, .BB0 + + ! CHECK: bne,a %icc, .BB0 ! encoding: [0x32,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,a,pt %icc, .BB0 + + ! CHECK: be,a %icc, .BB0 ! encoding: [0x22,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,a,pt %icc, .BB0 + + ! CHECK: bg,a %icc, .BB0 ! encoding: [0x34,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,a,pt %icc, .BB0 + + ! CHECK: ble,a %icc, .BB0 ! encoding: [0x24,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,a,pt %icc, .BB0 + + ! CHECK: bge,a %icc, .BB0 ! encoding: [0x36,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,a,pt %icc, .BB0 + + ! CHECK: bl,a %icc, .BB0 ! encoding: [0x26,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,a,pt %icc, .BB0 + + ! CHECK: bgu,a %icc, .BB0 ! encoding: [0x38,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,a,pt %icc, .BB0 + + ! CHECK: bleu,a %icc, .BB0 ! encoding: [0x28,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,a,pt %icc, .BB0 + + ! CHECK: bcc,a %icc, .BB0 ! encoding: [0x3a,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,a,pt %icc, .BB0 + + ! CHECK: bcs,a %icc, .BB0 ! encoding: [0x2a,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,a,pt %icc, .BB0 + + ! CHECK: bpos,a %icc, .BB0 ! encoding: [0x3c,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,a,pt %icc, .BB0 + + + ! CHECK: bne,a %xcc, .BB0 ! encoding: [0x32,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,a %xcc, .BB0 + + ! CHECK: be,a %xcc, .BB0 ! encoding: [0x22,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,a %xcc, .BB0 + + ! CHECK: bg,a %xcc, .BB0 ! encoding: [0x34,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,a %xcc, .BB0 + + ! CHECK: ble,a %xcc, .BB0 ! encoding: [0x24,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,a %xcc, .BB0 + + ! CHECK: bge,a %xcc, .BB0 ! encoding: [0x36,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,a %xcc, .BB0 + + ! CHECK: bl,a %xcc, .BB0 ! encoding: [0x26,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,a %xcc, .BB0 + + ! CHECK: bgu,a %xcc, .BB0 ! encoding: [0x38,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,a %xcc, .BB0 + + ! CHECK: bleu,a %xcc, .BB0 ! encoding: [0x28,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,a %xcc, .BB0 + + ! CHECK: bcc,a %xcc, .BB0 ! encoding: [0x3a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,a %xcc, .BB0 + + ! CHECK: bcs,a %xcc, .BB0 ! encoding: [0x2a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,a %xcc, .BB0 + + ! CHECK: bpos,a %xcc, .BB0 ! encoding: [0x3c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,a %xcc, .BB0 + + ! CHECK: bneg,a %xcc, .BB0 ! encoding: [0x2c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,a %xcc, .BB0 + + ! CHECK: bvc,a %xcc, .BB0 ! encoding: [0x3e,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,a %xcc, .BB0 + + ! CHECK: bvs,a %xcc, .BB0 ! encoding: [0x2e,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,a %xcc, .BB0 + + ! CHECK: bne,pn %xcc, .BB0 ! encoding: [0x12,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,pn %xcc, .BB0 + + ! CHECK: be,pn %xcc, .BB0 ! encoding: [0x02,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,pn %xcc, .BB0 + + ! CHECK: bg,pn %xcc, .BB0 ! encoding: [0x14,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,pn %xcc, .BB0 + + ! CHECK: ble,pn %xcc, .BB0 ! encoding: [0x04,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,pn %xcc, .BB0 + + ! CHECK: bge,pn %xcc, .BB0 ! encoding: [0x16,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,pn %xcc, .BB0 + + ! CHECK: bl,pn %xcc, .BB0 ! encoding: [0x06,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,pn %xcc, .BB0 + + ! CHECK: bgu,pn %xcc, .BB0 ! encoding: [0x18,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,pn %xcc, .BB0 + + ! CHECK: bleu,pn %xcc, .BB0 ! encoding: [0x08,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,pn %xcc, .BB0 + + ! CHECK: bcc,pn %xcc, .BB0 ! encoding: [0x1a,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,pn %xcc, .BB0 + + ! CHECK: bcs,pn %xcc, .BB0 ! encoding: [0x0a,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,pn %xcc, .BB0 + + ! CHECK: bpos,pn %xcc, .BB0 ! encoding: [0x1c,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,pn %xcc, .BB0 + + ! CHECK: bneg,pn %xcc, .BB0 ! encoding: [0x0c,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,pn %xcc, .BB0 + + ! CHECK: bvc,pn %xcc, .BB0 ! encoding: [0x1e,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,pn %xcc, .BB0 + + ! CHECK: bvs,pn %xcc, .BB0 ! encoding: [0x0e,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,pn %xcc, .BB0 + + ! CHECK: bne,a,pn %xcc, .BB0 ! encoding: [0x32,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,a,pn %xcc, .BB0 + + ! CHECK: be,a,pn %xcc, .BB0 ! encoding: [0x22,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,a,pn %xcc, .BB0 + + ! CHECK: bg,a,pn %xcc, .BB0 ! encoding: [0x34,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,a,pn %xcc, .BB0 + + ! CHECK: ble,a,pn %xcc, .BB0 ! encoding: [0x24,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,a,pn %xcc, .BB0 + + ! CHECK: bge,a,pn %xcc, .BB0 ! encoding: [0x36,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,a,pn %xcc, .BB0 + + ! CHECK: bl,a,pn %xcc, .BB0 ! encoding: [0x26,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,a,pn %xcc, .BB0 + + ! CHECK: bgu,a,pn %xcc, .BB0 ! encoding: [0x38,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,a,pn %xcc, .BB0 + + ! CHECK: bleu,a,pn %xcc, .BB0 ! encoding: [0x28,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,a,pn %xcc, .BB0 + + ! CHECK: bcc,a,pn %xcc, .BB0 ! encoding: [0x3a,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,a,pn %xcc, .BB0 + + ! CHECK: bcs,a,pn %xcc, .BB0 ! encoding: [0x2a,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,a,pn %xcc, .BB0 + + ! CHECK: bpos,a,pn %xcc, .BB0 ! encoding: [0x3c,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,a,pn %xcc, .BB0 + + ! CHECK: bneg,a,pn %xcc, .BB0 ! encoding: [0x2c,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,a,pn %xcc, .BB0 + + ! CHECK: bvc,a,pn %xcc, .BB0 ! encoding: [0x3e,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,a,pn %xcc, .BB0 + + ! CHECK: bvs,a,pn %xcc, .BB0 ! encoding: [0x2e,0b01100AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,a,pn %xcc, .BB0 + + ! CHECK: bne %xcc, .BB0 ! encoding: [0x12,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,pt %xcc, .BB0 + + ! CHECK: be %xcc, .BB0 ! encoding: [0x02,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,pt %xcc, .BB0 + + ! CHECK: bg %xcc, .BB0 ! encoding: [0x14,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,pt %xcc, .BB0 + + ! CHECK: ble %xcc, .BB0 ! encoding: [0x04,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,pt %xcc, .BB0 + + ! CHECK: bge %xcc, .BB0 ! encoding: [0x16,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,pt %xcc, .BB0 + + ! CHECK: bl %xcc, .BB0 ! encoding: [0x06,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,pt %xcc, .BB0 + + ! CHECK: bgu %xcc, .BB0 ! encoding: [0x18,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,pt %xcc, .BB0 + + ! CHECK: bleu %xcc, .BB0 ! encoding: [0x08,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,pt %xcc, .BB0 + + ! CHECK: bcc %xcc, .BB0 ! encoding: [0x1a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,pt %xcc, .BB0 + + ! CHECK: bcs %xcc, .BB0 ! encoding: [0x0a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,pt %xcc, .BB0 + + ! CHECK: bpos %xcc, .BB0 ! encoding: [0x1c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,pt %xcc, .BB0 + + ! CHECK: bneg %xcc, .BB0 ! encoding: [0x0c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bneg,pt %xcc, .BB0 + + ! CHECK: bvc %xcc, .BB0 ! encoding: [0x1e,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvc,pt %xcc, .BB0 + + ! CHECK: bvs %xcc, .BB0 ! encoding: [0x0e,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bvs,pt %xcc, .BB0 + + ! CHECK: bne,a %xcc, .BB0 ! encoding: [0x32,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bne,a,pt %xcc, .BB0 + + ! CHECK: be,a %xcc, .BB0 ! encoding: [0x22,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + be,a,pt %xcc, .BB0 + + ! CHECK: bg,a %xcc, .BB0 ! encoding: [0x34,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bg,a,pt %xcc, .BB0 + + ! CHECK: ble,a %xcc, .BB0 ! encoding: [0x24,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + ble,a,pt %xcc, .BB0 + + ! CHECK: bge,a %xcc, .BB0 ! encoding: [0x36,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bge,a,pt %xcc, .BB0 + + ! CHECK: bl,a %xcc, .BB0 ! encoding: [0x26,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bl,a,pt %xcc, .BB0 + + ! CHECK: bgu,a %xcc, .BB0 ! encoding: [0x38,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bgu,a,pt %xcc, .BB0 + + ! CHECK: bleu,a %xcc, .BB0 ! encoding: [0x28,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bleu,a,pt %xcc, .BB0 + + ! CHECK: bcc,a %xcc, .BB0 ! encoding: [0x3a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcc,a,pt %xcc, .BB0 + + ! CHECK: bcs,a %xcc, .BB0 ! encoding: [0x2a,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bcs,a,pt %xcc, .BB0 + + ! CHECK: bpos,a %xcc, .BB0 ! encoding: [0x3c,0b01101AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + bpos,a,pt %xcc, .BB0 + + ! CHECK: fbu %fcc0, .BB0 ! encoding: [0x0f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu %fcc0, .BB0 + + ! CHECK: fbg %fcc0, .BB0 ! encoding: [0x0d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbg %fcc0, .BB0 + ! CHECK: fbug %fcc0, .BB0 ! encoding: [0x0b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug %fcc0, .BB0 + + ! CHECK: fbl %fcc0, .BB0 ! encoding: [0x09,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl %fcc0, .BB0 + + ! CHECK: fbul %fcc0, .BB0 ! encoding: [0x07,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbul %fcc0, .BB0 + + ! CHECK: fblg %fcc0, .BB0 ! encoding: [0x05,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fblg %fcc0, .BB0 + + ! CHECK: fbne %fcc0, .BB0 ! encoding: [0x03,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne %fcc0, .BB0 + + ! CHECK: fbe %fcc0, .BB0 ! encoding: [0x13,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbe %fcc0, .BB0 + + ! CHECK: fbue %fcc0, .BB0 ! encoding: [0x15,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue %fcc0, .BB0 + + ! CHECK: fbge %fcc0, .BB0 ! encoding: [0x17,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbge %fcc0, .BB0 + + ! CHECK: fbuge %fcc0, .BB0 ! encoding: [0x19,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbuge %fcc0, .BB0 + + ! CHECK: fble %fcc0, .BB0 ! encoding: [0x1b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fble %fcc0, .BB0 + + ! CHECK: fbule %fcc0, .BB0 ! encoding: [0x1d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbule %fcc0, .BB0 + + ! CHECK: fbo %fcc0, .BB0 ! encoding: [0x1f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo %fcc0, .BB0 + + ! CHECK: fbu %fcc0, .BB0 ! encoding: [0x0f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu,pt %fcc0, .BB0 + + ! CHECK: fbg %fcc0, .BB0 ! encoding: [0x0d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbg,pt %fcc0, .BB0 + ! CHECK: fbug %fcc0, .BB0 ! encoding: [0x0b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug,pt %fcc0, .BB0 + + ! CHECK: fbl %fcc0, .BB0 ! encoding: [0x09,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl,pt %fcc0, .BB0 + + ! CHECK: fbul %fcc0, .BB0 ! encoding: [0x07,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbul,pt %fcc0, .BB0 + + ! CHECK: fblg %fcc0, .BB0 ! encoding: [0x05,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fblg,pt %fcc0, .BB0 + + ! CHECK: fbne %fcc0, .BB0 ! encoding: [0x03,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne,pt %fcc0, .BB0 + + ! CHECK: fbe %fcc0, .BB0 ! encoding: [0x13,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbe,pt %fcc0, .BB0 + + ! CHECK: fbue %fcc0, .BB0 ! encoding: [0x15,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue,pt %fcc0, .BB0 + + ! CHECK: fbge %fcc0, .BB0 ! encoding: [0x17,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbge,pt %fcc0, .BB0 + + ! CHECK: fbuge %fcc0, .BB0 ! encoding: [0x19,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbuge,pt %fcc0, .BB0 + + ! CHECK: fble %fcc0, .BB0 ! encoding: [0x1b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fble,pt %fcc0, .BB0 + + ! CHECK: fbule %fcc0, .BB0 ! encoding: [0x1d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbule,pt %fcc0, .BB0 + + ! CHECK: fbo %fcc0, .BB0 ! encoding: [0x1f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,pt %fcc0, .BB0 + + + ! CHECK: fbo,a %fcc0, .BB0 ! encoding: [0x3f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,a %fcc0, .BB0 + + ! CHECK: fbu,a %fcc0, .BB0 ! encoding: [0x2f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu,a %fcc0, .BB0 + + ! CHECK: fbg,a %fcc0, .BB0 ! encoding: [0x2d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbg,a %fcc0, .BB0 + ! CHECK: fbug,a %fcc0, .BB0 ! encoding: [0x2b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug,a %fcc0, .BB0 + + ! CHECK: fbl,a %fcc0, .BB0 ! encoding: [0x29,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl,a %fcc0, .BB0 + + ! CHECK: fbul,a %fcc0, .BB0 ! encoding: [0x27,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbul,a %fcc0, .BB0 + + ! CHECK: fblg,a %fcc0, .BB0 ! encoding: [0x25,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fblg,a %fcc0, .BB0 + + ! CHECK: fbne,a %fcc0, .BB0 ! encoding: [0x23,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne,a %fcc0, .BB0 + + ! CHECK: fbe,a %fcc0, .BB0 ! encoding: [0x33,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbe,a %fcc0, .BB0 + + ! CHECK: fbue,a %fcc0, .BB0 ! encoding: [0x35,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue,a %fcc0, .BB0 + + ! CHECK: fbge,a %fcc0, .BB0 ! encoding: [0x37,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbge,a %fcc0, .BB0 + + ! CHECK: fbuge,a %fcc0, .BB0 ! encoding: [0x39,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbuge,a %fcc0, .BB0 + + ! CHECK: fble,a %fcc0, .BB0 ! encoding: [0x3b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fble,a %fcc0, .BB0 + + ! CHECK: fbule,a %fcc0, .BB0 ! encoding: [0x3d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbule,a %fcc0, .BB0 + + ! CHECK: fbo,a %fcc0, .BB0 ! encoding: [0x3f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,a %fcc0, .BB0 + + ! CHECK: fbo,a %fcc0, .BB0 ! encoding: [0x3f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,a %fcc0, .BB0 + + ! CHECK: fbu,a %fcc0, .BB0 ! encoding: [0x2f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu,a,pt %fcc0, .BB0 + + ! CHECK: fbg,a %fcc0, .BB0 ! encoding: [0x2d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbg,a,pt %fcc0, .BB0 + + ! CHECK: fbug,a %fcc0, .BB0 ! encoding: [0x2b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug,a,pt %fcc0, .BB0 + + ! CHECK: fbl,a %fcc0, .BB0 ! encoding: [0x29,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl,a,pt %fcc0, .BB0 + + ! CHECK: fbul,a %fcc0, .BB0 ! encoding: [0x27,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbul,a,pt %fcc0, .BB0 + + ! CHECK: fblg,a %fcc0, .BB0 ! encoding: [0x25,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fblg,a,pt %fcc0, .BB0 + + ! CHECK: fbne,a %fcc0, .BB0 ! encoding: [0x23,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne,a,pt %fcc0, .BB0 + + ! CHECK: fbe,a %fcc0, .BB0 ! encoding: [0x33,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbe,a,pt %fcc0, .BB0 + + ! CHECK: fbue,a %fcc0, .BB0 ! encoding: [0x35,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue,a,pt %fcc0, .BB0 + + ! CHECK: fbge,a %fcc0, .BB0 ! encoding: [0x37,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbge,a,pt %fcc0, .BB0 + + ! CHECK: fbuge,a %fcc0, .BB0 ! encoding: [0x39,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbuge,a,pt %fcc0, .BB0 + + ! CHECK: fble,a %fcc0, .BB0 ! encoding: [0x3b,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fble,a,pt %fcc0, .BB0 + + ! CHECK: fbule,a %fcc0, .BB0 ! encoding: [0x3d,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbule,a,pt %fcc0, .BB0 + + ! CHECK: fbo,a %fcc0, .BB0 ! encoding: [0x3f,0b01001AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,a,pt %fcc0, .BB0 + + ! CHECK: fbu,pn %fcc0, .BB0 ! encoding: [0x0f,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu,pn %fcc0, .BB0 + + ! CHECK: fbg,pn %fcc0, .BB0 ! encoding: [0x0d,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbg,pn %fcc0, .BB0 + ! CHECK: fbug,pn %fcc0, .BB0 ! encoding: [0x0b,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug,pn %fcc0, .BB0 + + ! CHECK: fbl,pn %fcc0, .BB0 ! encoding: [0x09,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl,pn %fcc0, .BB0 + + ! CHECK: fbul,pn %fcc0, .BB0 ! encoding: [0x07,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbul,pn %fcc0, .BB0 + + ! CHECK: fblg,pn %fcc0, .BB0 ! encoding: [0x05,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fblg,pn %fcc0, .BB0 + + ! CHECK: fbne,pn %fcc0, .BB0 ! encoding: [0x03,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne,pn %fcc0, .BB0 + + ! CHECK: fbe,pn %fcc0, .BB0 ! encoding: [0x13,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbe,pn %fcc0, .BB0 + + ! CHECK: fbue,pn %fcc0, .BB0 ! encoding: [0x15,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue,pn %fcc0, .BB0 + + ! CHECK: fbge,pn %fcc0, .BB0 ! encoding: [0x17,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbge,pn %fcc0, .BB0 + + ! CHECK: fbuge,pn %fcc0, .BB0 ! encoding: [0x19,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbuge,pn %fcc0, .BB0 + + ! CHECK: fble,pn %fcc0, .BB0 ! encoding: [0x1b,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fble,pn %fcc0, .BB0 + + ! CHECK: fbule,pn %fcc0, .BB0 ! encoding: [0x1d,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbule,pn %fcc0, .BB0 + + ! CHECK: fbo,pn %fcc0, .BB0 ! encoding: [0x1f,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,pn %fcc0, .BB0 + + ! CHECK: fbu,a,pn %fcc0, .BB0 ! encoding: [0x2f,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu,a,pn %fcc0, .BB0 + + ! CHECK: fbg,a,pn %fcc0, .BB0 ! encoding: [0x2d,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbg,a,pn %fcc0, .BB0 + + ! CHECK: fbug,a,pn %fcc0, .BB0 ! encoding: [0x2b,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug,a,pn %fcc0, .BB0 + + ! CHECK: fbl,a,pn %fcc0, .BB0 ! encoding: [0x29,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl,a,pn %fcc0, .BB0 + + ! CHECK: fbul,a,pn %fcc0, .BB0 ! encoding: [0x27,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbul,a,pn %fcc0, .BB0 + + ! CHECK: fblg,a,pn %fcc0, .BB0 ! encoding: [0x25,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fblg,a,pn %fcc0, .BB0 + + ! CHECK: fbne,a,pn %fcc0, .BB0 ! encoding: [0x23,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne,a,pn %fcc0, .BB0 + + ! CHECK: fbe,a,pn %fcc0, .BB0 ! encoding: [0x33,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbe,a,pn %fcc0, .BB0 + + ! CHECK: fbue,a,pn %fcc0, .BB0 ! encoding: [0x35,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue,a,pn %fcc0, .BB0 + + ! CHECK: fbge,a,pn %fcc0, .BB0 ! encoding: [0x37,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbge,a,pn %fcc0, .BB0 + + ! CHECK: fbuge,a,pn %fcc0, .BB0 ! encoding: [0x39,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbuge,a,pn %fcc0, .BB0 + + ! CHECK: fble,a,pn %fcc0, .BB0 ! encoding: [0x3b,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fble,a,pn %fcc0, .BB0 + + ! CHECK: fbule,a,pn %fcc0, .BB0 ! encoding: [0x3d,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbule,a,pn %fcc0, .BB0 + + ! CHECK: fbo,a,pn %fcc0, .BB0 ! encoding: [0x3f,0b01000AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbo,a,pn %fcc0, .BB0 + + ! CHECK: movu %fcc1, %g1, %g2 ! encoding: [0x85,0x61,0xc8,0x01] + movu %fcc1, %g1, %g2 + + ! CHECK: fmovsg %fcc2, %f1, %f2 ! encoding: [0x85,0xa9,0x90,0x21] + fmovsg %fcc2, %f1, %f2 + + ! CHECK: fbug %fcc3, .BB0 ! encoding: [0x0b,0b01111AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbug %fcc3, .BB0 + + ! CHECK: fbu %fcc3, .BB0 ! encoding: [0x0f,0b01111AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbu,pt %fcc3, .BB0 + + ! CHECK: fbl,a %fcc3, .BB0 ! encoding: [0x29,0b01111AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbl,a %fcc3, .BB0 + + ! CHECK: fbue,pn %fcc3, .BB0 ! encoding: [0x15,0b01110AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbue,pn %fcc3, .BB0 + + ! CHECK: fbne,a,pn %fcc3, .BB0 ! encoding: [0x23,0b01110AAA,A,A] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br19 + fbne,a,pn %fcc3, .BB0 + + + ! CHECK: brz %g1, .BB0 ! encoding: [0x02,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + ! CHECK: brlez %g1, .BB0 ! encoding: [0x04,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + ! CHECK: brlz %g1, .BB0 ! encoding: [0x06,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + ! CHECK: brnz %g1, .BB0 ! encoding: [0x0a,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + ! CHECK: brgz %g1, .BB0 ! encoding: [0x0c,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + ! CHECK: brgez %g1, .BB0 ! encoding: [0x0e,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + + brz %g1, .BB0 + brlez %g1, .BB0 + brlz %g1, .BB0 + brnz %g1, .BB0 + brgz %g1, .BB0 + brgez %g1, .BB0 + + ! CHECK: brz %g1, .BB0 ! encoding: [0x02,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + brz,pt %g1, .BB0 + + ! CHECK: brz,a %g1, .BB0 ! encoding: [0x22,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + brz,a %g1, .BB0 + + ! CHECK: brz,a %g1, .BB0 ! encoding: [0x22,0b11AA1000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + brz,a,pt %g1, .BB0 + + ! CHECK: brz,pn %g1, .BB0 ! encoding: [0x02,0b11AA0000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + brz,pn %g1, .BB0 + + ! CHECK: brz,a,pn %g1, .BB0 ! encoding: [0x22,0b11AA0000,0b01BBBBBB,B] + ! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br16_2 + ! CHECK-NEXT: ! fixup B - offset: 0, value: .BB0, kind: fixup_sparc_br16_14 + brz,a,pn %g1, .BB0 + + ! CHECK: movrz %g1, %g2, %g3 ! encoding: [0x87,0x78,0x44,0x02] + ! CHECK: movrlez %g1, %g2, %g3 ! encoding: [0x87,0x78,0x48,0x02] + ! CHECK: movrlz %g1, %g2, %g3 ! encoding: [0x87,0x78,0x4c,0x02] + ! CHECK: movrnz %g1, %g2, %g3 ! encoding: [0x87,0x78,0x54,0x02] + ! CHECK: movrgz %g1, %g2, %g3 ! encoding: [0x87,0x78,0x58,0x02] + ! CHECK: movrgez %g1, %g2, %g3 ! encoding: [0x87,0x78,0x5c,0x02] + movrz %g1, %g2, %g3 + movrlez %g1, %g2, %g3 + movrlz %g1, %g2, %g3 + movrnz %g1, %g2, %g3 + movrgz %g1, %g2, %g3 + movrgez %g1, %g2, %g3 + + ! CHECK: fmovrsz %g1, %f2, %f3 ! encoding: [0x87,0xa8,0x44,0xa2] + ! CHECK: fmovrslez %g1, %f2, %f3 ! encoding: [0x87,0xa8,0x48,0xa2] + ! CHECK: fmovrslz %g1, %f2, %f3 ! encoding: [0x87,0xa8,0x4c,0xa2] + ! CHECK: fmovrsnz %g1, %f2, %f3 ! encoding: [0x87,0xa8,0x54,0xa2] + ! CHECK: fmovrsgz %g1, %f2, %f3 ! encoding: [0x87,0xa8,0x58,0xa2] + ! CHECK: fmovrsgez %g1, %f2, %f3 ! encoding: [0x87,0xa8,0x5c,0xa2] + fmovrsz %g1, %f2, %f3 + fmovrslez %g1, %f2, %f3 + fmovrslz %g1, %f2, %f3 + fmovrsnz %g1, %f2, %f3 + fmovrsgz %g1, %f2, %f3 + fmovrsgez %g1, %f2, %f3 + + ! CHECK: rett %i7+8 ! encoding: [0x81,0xcf,0xe0,0x08] + return %i7 + 8 + + ! CHECK: ta %icc, %g0 + 5 ! encoding: [0x91,0xd0,0x20,0x05] + ta 5 + + ! CHECK: te %xcc, %g0 + 3 ! encoding: [0x83,0xd0,0x30,0x03] + te %xcc, 3 + diff --git a/test/MC/Sparc/sparcv8-instructions.s b/test/MC/Sparc/sparcv8-instructions.s new file mode 100644 index 0000000..9071b45 --- /dev/null +++ b/test/MC/Sparc/sparcv8-instructions.s @@ -0,0 +1,15 @@ +! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s + + ! CHECK: fcmps %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0x24] + ! CHECK: fcmpd %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0x44] + ! CHECK: fcmpq %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0x64] + fcmps %f0, %f4 + fcmpd %f0, %f4 + fcmpq %f0, %f4 + + ! CHECK: fcmpes %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xa4] + ! CHECK: fcmped %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xc4] + ! CHECK: fcmpeq %f0, %f4 ! encoding: [0x81,0xa8,0x0a,0xe4] + fcmpes %f0, %f4 + fcmped %f0, %f4 + fcmpeq %f0, %f4 diff --git a/test/MC/Sparc/sparcv9-instructions.s b/test/MC/Sparc/sparcv9-instructions.s new file mode 100644 index 0000000..37f4c8b --- /dev/null +++ b/test/MC/Sparc/sparcv9-instructions.s @@ -0,0 +1,23 @@ +! RUN: not llvm-mc %s -arch=sparc -show-encoding 2>&1 | FileCheck %s --check-prefix=V8 +! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s --check-prefix=V9 + + ! V8: error: invalid instruction mnemonic + ! V8-NEXT: addc %g2, %g1, %g3 + ! V9: addx %g2, %g1, %g3 ! encoding: [0x86,0x40,0x80,0x01] + addc %g2, %g1, %g3 + + ! V8: error: invalid instruction mnemonic + ! V8-NEXT: addccc %g1, %g2, %g3 + ! V9: addxcc %g1, %g2, %g3 ! encoding: [0x86,0xc0,0x40,0x02] + addccc %g1, %g2, %g3 + + ! V8: error: invalid instruction mnemonic + ! V8-NEXT: subc %g2, %g1, %g3 + ! V9: subx %g2, %g1, %g3 ! encoding: [0x86,0x60,0x80,0x01] + subc %g2, %g1, %g3 + + ! V8: error: invalid instruction mnemonic + ! V8-NEXT: subccc %g1, %g2, %g3 + ! V9: subxcc %g1, %g2, %g3 ! encoding: [0x86,0xe0,0x40,0x02] + subccc %g1, %g2, %g3 + |