Imported Upstream version 5.18.0.167

Former-commit-id: 289509151e0fee68a1b591a20c9f109c3c789d3a
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2018-10-20 08:25:10 +00:00
parent e19d552987
commit b084638f15
28489 changed files with 184 additions and 3866856 deletions

View File

@ -1,20 +0,0 @@
! RUN: llvm-mc %s -arch=sparc -mcpu=leon3 -show-encoding | FileCheck %s -check-prefix=CHECK_NO_CASA
! RUN: llvm-mc %s -arch=sparc -mcpu=ut699 -show-encoding | FileCheck %s -check-prefix=CHECK_NO_CASA
! RUN: llvm-mc %s -arch=sparc -mcpu=gr712rc -show-encoding | FileCheck %s
! RUN: llvm-mc %s -arch=sparc -mcpu=leon4 -show-encoding | FileCheck %s
! RUN: llvm-mc %s -arch=sparc -mcpu=gr740 -show-encoding | FileCheck %s
! CHECK: casa [%i0] 10, %l6, %o2 ! encoding: [0xd5,0xe6,0x01,0x56]
casa [%i0] 10, %l6, %o2
! CHECK: casa [%i0] 5, %l6, %o2 ! encoding: [0xd5,0xe6,0x00,0xb6]
casa [%i0] 5, %l6, %o2
! CHECK: umac %i0, %l6, %o2 ! encoding: [0x95,0xf6,0x00,0x16]
! CHECK_NO_CASA: umac %i0, %l6, %o2 ! encoding: [0x95,0xf6,0x00,0x16]
umac %i0, %l6, %o2
! CHECK: smac %i0, %l6, %o2 ! encoding: [0x95,0xfe,0x00,0x16]
! CHECK_NO_CASA: smac %i0, %l6, %o2 ! encoding: [0x95,0xfe,0x00,0x16]
smac %i0, %l6, %o2

View File

@ -1,3 +0,0 @@
if not 'Sparc' in config.root.targets:
config.unsupported = True

View File

@ -1,134 +0,0 @@
! 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: mov %g1, %g3 ! encoding: [0x86,0x10,0x00,0x01]
mov %g1, %g3
! CHECK: mov 255, %g3 ! encoding: [0x86,0x10,0x20,0xff]
mov 0xff, %g3
! CHECK: restore %g0, %g0, %g1 ! encoding: [0x83,0xe8,0x00,0x00]
restore %g0, %g0, %g1
! 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: mulscc %g2, %g1, %g3 ! encoding: [0x87,0x20,0x80,0x01]
mulscc %g2, %g1, %g3
! CHECK: mulscc %g2, 254, %g3 ! encoding: [0x87,0x20,0xa0,0xfe]
mulscc %g2, 254, %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

View File

@ -1,8 +0,0 @@
! RUN: not llvm-mc %s -arch=sparc -show-encoding 2>&1 | FileCheck %s
! RUN: not llvm-mc %s -arch=sparcv9 -show-encoding 2>&1 | FileCheck %s
! Test the lower and upper bounds of 'set'
! CHECK: argument must be between
set -2147483649, %o1
! CHECK: argument must be between
set 4294967296, %o1

View File

@ -1,13 +0,0 @@
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s
! CHECK: mov 1033, %o1 ! encoding: [0x92,0x10,0x24,0x09]
mov (0x400|9), %o1
! CHECK: mov 60, %o2 ! encoding: [0x94,0x10,0x20,0x3c]
mov ((12+3)<<2), %o2
! "." is exactly like a temporary symbol equated to the current line.
! RUN: llvm-mc %s -arch=sparc | FileCheck %s --check-prefix=DOTEXPR
! DOTEXPR: .Ltmp0
! DOTEXPR-NEXT: ba .Ltmp0+8
b . + 8

View File

@ -1,23 +0,0 @@
! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s
! 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: swapa [%i0+%l6] 131, %o2 ! encoding: [0xd4,0xfe,0x10,0x76]
swapa [%i0+%l6] 131, %o2
! CHECK: ldstub [%i0+40], %g1 ! encoding: [0xc2,0x6e,0x20,0x28]
ldstub [%i0+40], %g1
! CHECK: ldstub [%i0+%i2], %g1 ! encoding: [0xc2,0x6e,0x00,0x1a]
ldstub [%i0+%i2], %g1
! CHECK: ldstuba [%i0+%i2] 131, %g1 ! encoding: [0xc2,0xee,0x10,0x7a]
ldstuba [%i0+%i2] 131, %g1

View File

@ -1,72 +0,0 @@
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s
! CHECK: ld [%i1], %c4 ! encoding: [0xc9,0x86,0x40,0x00]
! CHECK: ld [%i1+-15], %c4 ! encoding: [0xc9,0x86,0x7f,0xf1]
! CHECK: ld [%i1+%o3], %c4 ! encoding: [0xc9,0x86,0x40,0x0b]
! CHECK: ld [%i7], %c4 ! encoding: [0xc9,0x87,0xc0,0x00]
! CHECK: ld [%i1], %c19 ! encoding: [0xe7,0x86,0x40,0x00]
ld [%i1], %c4
ld [%i1 - 15], %c4
ld [%i1 +%o3], %c4
ld [%i7], %c4
ld [%i1], %c19
! CHECK: ldd [%i1], %c4 ! encoding: [0xc9,0x9e,0x40,0x00]
! CHECK: ldd [%i7], %c4 ! encoding: [0xc9,0x9f,0xc0,0x00]
! CHECK: ldd [%i7+200], %c4 ! encoding: [0xc9,0x9f,0xe0,0xc8]
! CHECK: ldd [%i7+%o3], %c4 ! encoding: [0xc9,0x9f,0xc0,0x0b]
! CHECK: ldd [%i1], %c30 ! encoding: [0xfd,0x9e,0x40,0x00]
ldd [%i1], %c4
ldd [%i7], %c4
ldd [%i7 + 200], %c4
ldd [%i7+%o3], %c4
ldd [%i1], %c30
! CHECK: st %c4, [%i1] ! encoding: [0xc9,0xa6,0x40,0x00]
! CHECK: st %c4, [%i7] ! encoding: [0xc9,0xa7,0xc0,0x00]
! CHECK: st %c4, [%i7+48] ! encoding: [0xc9,0xa7,0xe0,0x30]
! CHECK: st %c4, [%i4+%o2] ! encoding: [0xc9,0xa7,0x00,0x0a]
! CHECK: st %c19, [%i1] ! encoding: [0xe7,0xa6,0x40,0x00]
st %c4, [%i1]
st %c4, [%i7]
st %c4, [%i7+48]
st %c4, [%i4+%o2]
st %c19, [%i1]
! CHECK: std %c4, [%i1] ! encoding: [0xc9,0xbe,0x40,0x00]
! CHECK: std %c4, [%i7] ! encoding: [0xc9,0xbf,0xc0,0x00]
! CHECK: std %c4, [%i2+-240] ! encoding: [0xc9,0xbe,0xbf,0x10]
! CHECK: std %c4, [%i1+%o5] ! encoding: [0xc9,0xbe,0x40,0x0d]
! CHECK: std %c30, [%i1] ! encoding: [0xfd,0xbe,0x40,0x00]
std %c4, [%i1]
std %c4, [%i7]
std %c4, [%i2-240]
std %c4, [%i1+%o5]
std %c30, [%i1]
! CHECK: ld [%i5], %csr ! encoding: [0xc1,0x8f,0x40,0x00]
! CHECK: ld [%l2+3], %csr ! encoding: [0xc1,0x8c,0xa0,0x03]
! CHECK: ld [%l4+%l5], %csr ! encoding: [0xc1,0x8d,0x00,0x15]
ld [%i5], %csr
ld [%l2+3], %csr
ld [%l4+%l5], %csr
! CHECK: st %csr, [%i2] ! encoding: [0xc1,0xae,0x80,0x00]
! CHECK: st %csr, [%i2+31] ! encoding: [0xc1,0xae,0xa0,0x1f]
! CHECK: st %csr, [%i2+%o2] ! encoding: [0xc1,0xae,0x80,0x0a]
st %csr, [%i2]
st %csr, [%i2+31]
st %csr, [%i2+%o2]
! CHECK: std %cq, [%o3] ! encoding: [0xc1,0xb2,0xc0,0x00]
! CHECK: std %cq, [%o3+-93] ! encoding: [0xc1,0xb2,0xff,0xa3]
! CHECK: std %cq, [%o3+%l5] ! encoding: [0xc1,0xb2,0xc0,0x15]
std %cq, [%o3]
std %cq, [%o3-93]
std %cq, [%o3+%l5]

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +0,0 @@
! RUN: not llvm-mc %s -arch=sparc -show-encoding 2>&1 | FileCheck %s --check-prefix=SPARC32
! RUN: llvm-mc %s -triple sparc64 -show-encoding | FileCheck %s --check-prefix=SPARC64
! RUN: llvm-mc %s -triple sparcv9 -show-encoding | FileCheck %s --check-prefix=SPARCV9
! SPARC32: error: unknown directive
! SPARC32-NEXT: .xword 65536
! SPARC32-NEXT: ^
! SPARC64: .xword 65536
.xword 65536
! SPARCV9: .xword 65536
.xword 65536

View File

@ -1,23 +0,0 @@
! 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
! '.proc' is documented to do nothing in the binutils assembler.
! so it should do nothing for clang either, i.e. not be an error.
.proc 1
! 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

View File

@ -1,157 +0,0 @@
! 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 %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
! 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
! CHECK: ld [%l0], %f29 ! encoding: [0xfb,0x04,0x00,0x00]
! CHECK: ldd [%l0], %f48 ! encoding: [0xe3,0x1c,0x00,0x00]
ld [%l0], %f29
ldd [%l0], %f48
! CHECK: st %f29, [%l0] ! encoding: [0xfb,0x24,0x00,0x00]
! CHECK: std %f48, [%l0] ! encoding: [0xe3,0x3c,0x00,0x00]
st %f29, [%l0]
std %f48, [%l0]
! CHECK: std %fq, [%o4] ! encoding: [0xc1,0x33,0x00,0x00]
! CHECK: std %fq, [%l1+62] ! encoding: [0xc1,0x34,0x60,0x3e]
! CHECK: std %fq, [%i3+%l7] ! encoding: [0xc1,0x36,0xc0,0x17]
std %fq, [%o4]
std %fq, [%l1+62]
std %fq, [%i3+%l7]

View File

@ -1,18 +0,0 @@
! RUN: llvm-mc %s -triple=sparcel-linux-gnu -show-encoding | FileCheck %s
! RUN: llvm-mc -triple=sparcel-linux-gnu -filetype=obj < %s | llvm-objdump -d - | FileCheck %s --check-prefix=CHECK-OBJ
! CHECK-OBJ: .text:
.BB0:
! Ensure instructions are emitted in reversed byte order:
! CHECK: call %g1 ! encoding: [0x00,0x40,0xc0,0x9f]
! CHECK-OBJ: 0: 00 40 c0 9f call %g1
call %g1
! ...and that fixups are applied to the correct bytes.
! CHECK: ba .BB0 ! encoding: [A,A,0b10AAAAAA,0x10]
! CHECK-NEXT: ! fixup A - offset: 0, value: .BB0, kind: fixup_sparc_br22
! CHECK-OBJ: 4: ff ff bf 10 ba 4194303
ba .BB0

View File

@ -1,102 +0,0 @@
! 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,0x40,0x00]
ldsb [%g1], %o4
! CHECK: ldsba [%i0+%l6] 131, %o2 ! encoding: [0xd4,0xce,0x10,0x76]
ldsba [%i0 + %l6] 131, %o2
! 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,0x40,0x00]
ldsh [%g1], %o4
! CHECK: ldsha [%i0+%l6] 131, %o2 ! encoding: [0xd4,0xd6,0x10,0x76]
ldsha [%i0 + %l6] 131, %o2
! 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,0x40,0x00]
ldub [%g1], %o2
! CHECK: lduba [%i0+%l6] 131, %o2 ! encoding: [0xd4,0x8e,0x10,0x76]
lduba [%i0 + %l6] 131, %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,0x40,0x00]
lduh [%g1], %o2
! CHECK: lduha [%i0+%l6] 131, %o2 ! encoding: [0xd4,0x96,0x10,0x76]
lduha [%i0 + %l6] 131, %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,0x40,0x00]
ld [%g1], %o2
! CHECK: lda [%i0+%l6] 131, %o2 ! encoding: [0xd4,0x86,0x10,0x76]
lda [%i0 + %l6] 131, %o2
! CHECK: ldd [%i0+%l6], %o2 ! encoding: [0xd4,0x1e,0x00,0x16]
ldd [%i0 + %l6], %o2
! CHECK: ldd [%i0+32], %o2 ! encoding: [0xd4,0x1e,0x20,0x20]
ldd [%i0 + 32], %o2
! CHECK: ldd [%g1], %o2 ! encoding: [0xd4,0x18,0x40,0x00]
ldd [%g1], %o2
! CHECK: ldda [%i0+%l6] 131, %o2 ! encoding: [0xd4,0x9e,0x10,0x76]
ldda [%i0 + %l6] 131, %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,0x40,0x00]
stb %o2, [%g1]
! CHECK: stba %o2, [%i0+%l6] 131 ! encoding: [0xd4,0xae,0x10,0x76]
stba %o2, [%i0 + %l6] 131
! 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,0x40,0x00]
sth %o2, [%g1]
! CHECK: stha %o2, [%i0+%l6] 131 ! encoding: [0xd4,0xb6,0x10,0x76]
stha %o2, [%i0 + %l6] 131
! 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,0x40,0x00]
st %o2, [%g1]
! CHECK: sta %o2, [%i0+%l6] 131 ! encoding: [0xd4,0xa6,0x10,0x76]
sta %o2, [%i0 + %l6] 131
! CHECK: std %o2, [%i0+%l6] ! encoding: [0xd4,0x3e,0x00,0x16]
std %o2, [%i0 + %l6]
! CHECK: std %o2, [%i0+32] ! encoding: [0xd4,0x3e,0x20,0x20]
std %o2, [%i0 + 32]
! CHECK: std %o2, [%g1] ! encoding: [0xd4,0x38,0x40,0x00]
std %o2, [%g1]
! CHECK: stda %o2, [%i0+%l6] 131 ! encoding: [0xd4,0xbe,0x10,0x76]
stda %o2, [%i0 + %l6] 131
! CHECK: flush %g1+%g2 ! encoding: [0x81,0xd8,0x40,0x02]
flush %g1 + %g2
! CHECK: flush %g1+8 ! encoding: [0x81,0xd8,0x60,0x08]
flush %g1 + 8
! CHECK: flush %g1 ! encoding: [0x81,0xd8,0x40,0x00]
flush %g1
! Not specified in manual, but accepted by gas.
! CHECK: flush %g0 ! encoding: [0x81,0xd8,0x00,0x00]
flush

View File

@ -1,11 +0,0 @@
! 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

View File

@ -1,80 +0,0 @@
! RUN: llvm-mc %s -arch=sparcv9 --position-independent -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=PIC %s
! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -r | FileCheck --check-prefix=NOPIC %s
! PIC: Relocations [
! PIC-NOT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 .text 0xC
! PIC: 0x{{[0-9,A-F]+}} R_SPARC_PC22 _GLOBAL_OFFSET_TABLE_ 0x4
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x8
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC22 _GLOBAL_OFFSET_TABLE_ 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_PC10 _GLOBAL_OFFSET_TABLE_ 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 AGlobalVar 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 AGlobalVar 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT22 .LC0 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_GOT10 .LC0 0x0
! PIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 bar 0x0
! PIC: ]
! NOPIC: Relocations [
! NOPIC-NOT: 0x{{[0-9,A-F]+}} R_SPARC_WPLT30 .text 0xC
! NOPIC: 0x{{[0-9,A-F]+}} R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_ 0x4
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_ 0x8
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 _GLOBAL_OFFSET_TABLE_ 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 _GLOBAL_OFFSET_TABLE_ 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 AGlobalVar 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 AGlobalVar 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 AGlobalVar 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 AGlobalVar 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_HI22 .rodata 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_LO10 .rodata 0x0
! NOPIC-NEXT: 0x{{[0-9,A-F]+}} R_SPARC_WDISP30 bar 0x0
! NOPIC: ]
.section ".rodata"
.align 8
.LC0:
.asciz "string"
.section ".text"
.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
set _GLOBAL_OFFSET_TABLE_, %i1
add %i1, %o7, %i1
sethi %hi(AGlobalVar), %i2
add %i2, %lo(AGlobalVar), %i2
set AGlobalVar, %i2
ldx [%i1+%i2], %i3
ldx [%i3], %i3
sethi %hi(.LC0), %i2
add %i2, %lo(.LC0), %i2
ldx [%i1+%i2], %i4
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

View File

@ -1,46 +0,0 @@
! 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

View File

@ -1,56 +0,0 @@
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s
! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s
! CHECK: rd %y, %i0 ! encoding: [0xb1,0x40,0x00,0x00]
rd %y, %i0
! CHECK: rd %asr1, %i0 ! encoding: [0xb1,0x40,0x40,0x00]
rd %asr1, %i0
! CHECK: wr %i0, 5, %y ! encoding: [0x81,0x86,0x20,0x05]
wr %i0, 5, %y
! CHECK: wr %i0, %i1, %asr15 ! encoding: [0x9f,0x86,0x00,0x19]
wr %i0, %i1, %asr15
! CHECK: rd %asr15, %g0 ! encoding: [0x81,0x43,0xc0,0x00]
rd %asr15, %g0
! CHECK: rd %psr, %i0 ! encoding: [0xb1,0x48,0x00,0x00]
rd %psr, %i0
! CHECK: rd %wim, %i0 ! encoding: [0xb1,0x50,0x00,0x00]
rd %wim, %i0
! CHECK: rd %tbr, %i0 ! encoding: [0xb1,0x58,0x00,0x00]
rd %tbr, %i0
! CHECK: wr %i0, 5, %psr ! encoding: [0x81,0x8e,0x20,0x05]
wr %i0, 5, %psr
! CHECK: wr %i0, 5, %wim ! encoding: [0x81,0x96,0x20,0x05]
wr %i0, 5, %wim
! CHECK: wr %i0, 5, %tbr ! encoding: [0x81,0x9e,0x20,0x05]
wr %i0, 5, %tbr
! CHECK: rd %asr6, %i0 ! encoding: [0xb1,0x41,0x80,0x00]
rd %fprs, %i0
! CHECK: wr %i0, 7, %asr6 ! encoding: [0x8d,0x86,0x20,0x07]
wr %i0, 7, %fprs
! CHECK: ld [%g2+20], %fsr ! encoding: [0xc1,0x08,0xa0,0x14]
ld [%g2 + 20],%fsr
! CHECK: ld [%g2+%i5], %fsr ! encoding: [0xc1,0x08,0x80,0x1d]
ld [%g2 + %i5],%fsr
! CHECK: st %fsr, [%g2+20] ! encoding: [0xc1,0x28,0xa0,0x14]
st %fsr,[%g2 + 20]
! CHECK: st %fsr, [%g2+%i5] ! encoding: [0xc1,0x28,0x80,0x1d]
st %fsr,[%g2 + %i5]
! CHECK: std %fq, [%g6+%i2] ! encoding: [0xc1,0x31,0x80,0x1a]
std %fq, [%g6 + %i2]

View File

@ -1,213 +0,0 @@
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s
! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s
! Section A.3 Synthetic Instructions
! CHECK: cmp %g1, %g2 ! encoding: [0x80,0xa0,0x40,0x02]
cmp %g1, %g2
! CHECK: cmp %g1, 5 ! encoding: [0x80,0xa0,0x60,0x05]
cmp %g1, 5
! jmp and call are tested in sparc-ctrl-instructions.
! CHECK: tst %g1 ! encoding: [0x80,0x90,0x40,0x00]
tst %g1
! CHECK: ret ! encoding: [0x81,0xc7,0xe0,0x08]
ret
! CHECK: retl ! encoding: [0x81,0xc3,0xe0,0x08]
retl
! CHECK: restore ! encoding: [0x81,0xe8,0x00,0x00]
restore
! CHECK: save ! encoding: [0x81,0xe0,0x00,0x00]
save
! CHECK: sethi %hi(40000), %g1 ! encoding: [0x03,0b00AAAAAA,A,A]
! CHECK: ! fixup A - offset: 0, value: %hi(40000), kind: fixup_sparc_hi22
! CHECK: or %g1, %lo(40000), %g1 ! encoding: [0x82,0x10,0b011000AA,A]
! CHECK: ! fixup A - offset: 0, value: %lo(40000), kind: fixup_sparc_lo10
set 40000, %g1
! CHECK: mov 1, %g1 ! encoding: [0x82,0x10,0x20,0x01]
set 1, %g1
! CHECK: sethi %hi(32768), %g1 ! encoding: [0x03,0b00AAAAAA,A,A]
! CHECK: ! fixup A - offset: 0, value: %hi(32768), kind: fixup_sparc_hi22
set 32768, %g1
! Expect a 'sethi' without an 'or'.
! CHECK: sethi %hi(268431360), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! CHECK: ! fixup A - offset: 0, value: %hi(268431360), kind: fixup_sparc_hi22
set 0x0ffff000, %o1
! CHECK: sethi %hi(268433408), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! CHECK: ! fixup A - offset: 0, value: %hi(268433408), kind: fixup_sparc_hi22
set 0x0ffff800, %o1
! This is the boundary case that uses the lowest of the 22 bits in sethi.
! CHECK: sethi %hi(268434432), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! CHECK: ! fixup A - offset: 0, value: %hi(268434432), kind: fixup_sparc_hi22
set 0x0ffffc00, %o1
! Now the synthetic instruction becomes two instructions.
! CHECK: sethi %hi(2147483647), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! CHECK: ! fixup A - offset: 0, value: %hi(2147483647), kind: fixup_sparc_hi22
! CHECK: or %o1, %lo(2147483647), %o1 ! encoding: [0x92,0x12,0b011000AA,A]
! CHECK: ! fixup A - offset: 0, value: %lo(2147483647), kind: fixup_sparc_lo10
set 2147483647, %o1
! CHECK: xnor %g1, %g0, %g2 ! encoding: [0x84,0x38,0x40,0x00]
not %g1, %g2
! CHECK: xnor %g1, %g0, %g1 ! encoding: [0x82,0x38,0x40,0x00]
not %g1
! CHECK: sub %g0, %g1, %g2 ! encoding: [0x84,0x20,0x00,0x01]
neg %g1, %g2
! CHECK: sub %g0, %g1, %g1 ! encoding: [0x82,0x20,0x00,0x01]
neg %g1
! CHECK: add %g1, 1, %g1 ! encoding: [0x82,0x00,0x60,0x01]
inc %g1
! CHECK: add %g1, 55, %g1 ! encoding: [0x82,0x00,0x60,0x37]
inc 55, %g1
! CHECK: addcc %g1, 1, %g1 ! encoding: [0x82,0x80,0x60,0x01]
inccc %g1
! CHECK: addcc %g1, 55, %g1 ! encoding: [0x82,0x80,0x60,0x37]
inccc 55, %g1
! CHECK: sub %g1, 1, %g1 ! encoding: [0x82,0x20,0x60,0x01]
dec %g1
! CHECK: sub %g1, 55, %g1 ! encoding: [0x82,0x20,0x60,0x37]
dec 55, %g1
! CHECK: subcc %g1, 1, %g1 ! encoding: [0x82,0xa0,0x60,0x01]
deccc %g1
! CHECK: subcc %g1, 55, %g1 ! encoding: [0x82,0xa0,0x60,0x37]
deccc 55, %g1
! CHECK: andcc %g2, %g1, %g0 ! encoding: [0x80,0x88,0x80,0x01]
btst %g1, %g2
! CHECK: andcc %g2, 4, %g0 ! encoding: [0x80,0x88,0xa0,0x04]
btst 4, %g2
! CHECK: or %g2, %g1, %g2 ! encoding: [0x84,0x10,0x80,0x01]
bset %g1, %g2
! CHECK: or %g2, 4, %g2 ! encoding: [0x84,0x10,0xa0,0x04]
bset 4, %g2
! CHECK: andn %g2, %g1, %g2 ! encoding: [0x84,0x28,0x80,0x01]
bclr %g1, %g2
! CHECK: andn %g2, 4, %g2 ! encoding: [0x84,0x28,0xa0,0x04]
bclr 4, %g2
! CHECK: xor %g2, %g1, %g2 ! encoding: [0x84,0x18,0x80,0x01]
btog %g1, %g2
! CHECK: xor %g2, 4, %g2 ! encoding: [0x84,0x18,0xa0,0x04]
btog 4, %g2
! CHECK: mov %g0, %g1 ! encoding: [0x82,0x10,0x00,0x00]
clr %g1
! CHECK: stb %g0, [%g1+%g2] ! encoding: [0xc0,0x28,0x40,0x02]
clrb [%g1+%g2]
! CHECK: sth %g0, [%g1+%g2] ! encoding: [0xc0,0x30,0x40,0x02]
clrh [%g1+%g2]
! CHECK: st %g0, [%g1+%g2] ! encoding: [0xc0,0x20,0x40,0x02]
clr [%g1+%g2]
! mov reg_or_imm,reg tested in sparc-alu-instructions.s
! CHECK: rd %y, %i0 ! encoding: [0xb1,0x40,0x00,0x00]
mov %y, %i0
! CHECK: rd %asr1, %i0 ! encoding: [0xb1,0x40,0x40,0x00]
mov %asr1, %i0
! CHECK: rd %psr, %i0 ! encoding: [0xb1,0x48,0x00,0x00]
mov %psr, %i0
! CHECK: rd %wim, %i0 ! encoding: [0xb1,0x50,0x00,0x00]
mov %wim, %i0
! CHECK: rd %tbr, %i0 ! encoding: [0xb1,0x58,0x00,0x00]
mov %tbr, %i0
! CHECK: wr %g0, %i0, %y ! encoding: [0x81,0x80,0x00,0x18]
mov %i0, %y
! CHECK: wr %g0, 5, %y ! encoding: [0x81,0x80,0x20,0x05]
mov 5, %y
! CHECK: wr %g0, %i0, %asr15 ! encoding: [0x9f,0x80,0x00,0x18]
mov %i0, %asr15
! CHECK: wr %g0, 5, %asr15 ! encoding: [0x9f,0x80,0x20,0x05]
mov 5, %asr15
! CHECK: wr %g0, %i0, %psr ! encoding: [0x81,0x88,0x00,0x18]
mov %i0, %psr
! CHECK: wr %g0, 5, %psr ! encoding: [0x81,0x88,0x20,0x05]
mov 5, %psr
! CHECK: wr %g0, %i0, %wim ! encoding: [0x81,0x90,0x00,0x18]
mov %i0, %wim
! CHECK: wr %g0, 5, %wim ! encoding: [0x81,0x90,0x20,0x05]
mov 5, %wim
! CHECK: wr %g0, %i0, %tbr ! encoding: [0x81,0x98,0x00,0x18]
mov %i0, %tbr
! CHECK: wr %g0, 5, %tbr ! encoding: [0x81,0x98,0x20,0x05]
mov 5, %tbr
! Other aliases
! CHECK: wr %g0, %i0, %y ! encoding: [0x81,0x80,0x00,0x18]
wr %i0, %y
! CHECK: wr %g0, 5, %y ! encoding: [0x81,0x80,0x20,0x05]
wr 5, %y
! CHECK: wr %g0, %i0, %asr15 ! encoding: [0x9f,0x80,0x00,0x18]
wr %i0, %asr15
! CHECK: wr %g0, 5, %asr15 ! encoding: [0x9f,0x80,0x20,0x05]
wr 5, %asr15
! CHECK: wr %g0, %i0, %psr ! encoding: [0x81,0x88,0x00,0x18]
wr %i0, %psr
! CHECK: wr %g0, 5, %psr ! encoding: [0x81,0x88,0x20,0x05]
wr 5, %psr
! CHECK: wr %g0, %i0, %wim ! encoding: [0x81,0x90,0x00,0x18]
wr %i0, %wim
! CHECK: wr %g0, 5, %wim ! encoding: [0x81,0x90,0x20,0x05]
wr 5, %wim
! CHECK: wr %g0, %i0, %tbr ! encoding: [0x81,0x98,0x00,0x18]
wr %i0, %tbr
! CHECK: wr %g0, 5, %tbr ! encoding: [0x81,0x98,0x20,0x05]
wr 5, %tbr
! The following tests exercise 'set' in such a way that its output differs
! depending on whether targeting V8 or V9.
!
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s --check-prefix=V8
! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s --check-prefix=V9
! V8: mov -1, %o1 ! encoding: [0x92,0x10,0x3f,0xff]
! V9: sethi %hi(-1), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V9: ! fixup A - offset: 0, value: %hi(-1), kind: fixup_sparc_hi22
! V9: or %o1, %lo(-1), %o1 ! encoding: [0x92,0x12,0b011000AA,A]
! V9: ! fixup A - offset: 0, value: %lo(-1), kind: fixup_sparc_lo10
set 0xffffffff, %o1
! V8: mov -2, %o1 ! encoding: [0x92,0x10,0x3f,0xfe]
! V9: sethi %hi(-2), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V9: ! fixup A - offset: 0, value: %hi(-2), kind: fixup_sparc_hi22
! V9: or %o1, %lo(-2), %o1 ! encoding: [0x92,0x12,0b011000AA,A]
! V9: ! fixup A - offset: 0, value: %lo(-2), kind: fixup_sparc_lo10
set 0xfffffffe, %o1
! V8: mov -16, %o1 ! encoding: [0x92,0x10,0x3f,0xf0]
! V9: sethi %hi(-16), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V9: ! fixup A - offset: 0, value: %hi(-16), kind: fixup_sparc_hi22
! V9: or %o1, %lo(-16), %o1 ! encoding: [0x92,0x12,0b011000AA,A]
! V9: ! fixup A - offset: 0, value: %lo(-16), kind: fixup_sparc_lo10
set 0xfffffff0, %o1
! V8: mov -256, %o1 ! encoding: [0x92,0x10,0x3f,0x00]
! V9: sethi %hi(-256), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V9: ! fixup A - offset: 0, value: %hi(-256), kind: fixup_sparc_hi22
! V9: or %o1, %lo(-256), %o1 ! encoding: [0x92,0x12,0b011000AA,A]
! V9: ! fixup A - offset: 0, value: %lo(-256), kind: fixup_sparc_lo10
set 0xffffff00, %o1
! V8: mov -4096, %o1 ! encoding: [0x92,0x10,0x30,0x00]
! V9: sethi %hi(-4096), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V9: ! fixup A - offset: 0, value: %hi(-4096), kind: fixup_sparc_hi22
set 0xfffff000, %o1
! These results are the same for V8 and V9, so this test could have
! been with the others that weren't segregated by architecture,
! but logically it belongs here as a boundary case.
! V8: sethi %hi(-8192), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V8: ! fixup A - offset: 0, value: %hi(-8192), kind: fixup_sparc_hi22
! V9: sethi %hi(-8192), %o1 ! encoding: [0x13,0b00AAAAAA,A,A]
! V9: ! fixup A - offset: 0, value: %hi(-8192), kind: fixup_sparc_hi22
set 0xffffe000, %o1

View File

@ -1,83 +0,0 @@
! Testing Sparc TLS relocations emission
! (for now a couple local ones).
!
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s --check-prefix=ASM
! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s --check-prefix=ASM
! RUN: llvm-mc %s -arch=sparc -filetype=obj | llvm-readobj -r | FileCheck %s --check-prefix=REL
! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -r | FileCheck %s --check-prefix=REL
! RUN: llvm-mc %s -arch=sparc -filetype=obj | llvm-objdump -r -d - | FileCheck %s --check-prefix=OBJDUMP
! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-objdump -r -d - | FileCheck %s --check-prefix=OBJDUMP
! REL: Arch: sparc
! REL: Relocations [
! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LE_HIX22 Head 0x0
! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LE_LOX10 Head 0x0
! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDO_HIX22 Head 0x0
! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDM_HI22 Head 0x0
! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDM_LO10 Head 0x0
! REL: 0x{{[0-9,A-F]+}} R_SPARC_TLS_LDO_LOX10 Head 0x0
! REL: ]
! OBJDUMP: foo:
foo:
! Here we use two different sequences to get the address of a static TLS variable 'Head'
! (note - there is no intent to have valid assembler function here,
! we just check how TLS relocations are emitted)
!
! First sequence uses LE_HIX22/LE_LOX10
! OBJDUMP: {{[0-9,a-f]+}}: 31 00 00 00 sethi 0, %i0
! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_HIX22 Unknown
! ASM: sethi %tle_hix22(Head), %i0 ! encoding: [0x31,0x00,0x00,0x00]
! ASM: ! fixup A - offset: 0, value: %tle_hix22(Head), kind: fixup_sparc_tls_le_hix22
sethi %tle_hix22(Head), %i0
! OBJDUMP: {{[0-9,a-f]+}}: b0 1e 20 00 xor %i0, 0, %i0
! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LE_LOX10 Unknown
! ASM: xor %i0, %tle_lox10(Head), %i0 ! encoding: [0xb0,0x1e,0x20,0x00]
! ASM: ! fixup A - offset: 0, value: %tle_lox10(Head), kind: fixup_sparc_tls_le_lox10
xor %i0, %tle_lox10(Head), %i0
! Second sequence is for PIC, so it is more complicated.
! It uses LDO_HIX22/LDO_LOX10/LDO_ADD/LDM_HI22/LDM_LO10/LDM_ADD/LDM_CALL
! OBJDUMP: {{[0-9,a-f]+}}: 33 00 00 00 sethi 0, %i1
! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_HIX22 Unknown
! ASM: sethi %tldo_hix22(Head), %i1 ! encoding: [0x33,0b00AAAAAA,A,A]
! ASM: ! fixup A - offset: 0, value: %tldo_hix22(Head), kind: fixup_sparc_tls_ldo_hix22
sethi %tldo_hix22(Head), %i1
! OBJDUMP: {{[0-9,a-f]+}}: 35 00 00 00 sethi 0, %i2
! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_HI22 Unknown
! ASM: sethi %tldm_hi22(Head), %i2 ! encoding: [0x35,0b00AAAAAA,A,A]
! ASM: ! fixup A - offset: 0, value: %tldm_hi22(Head), kind: fixup_sparc_tls_ldm_hi22
sethi %tldm_hi22(Head), %i2
! OBJDUMP: {{[0-9,a-f]+}}: b4 06 a0 00 add %i2, 0, %i2
! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDM_LO10 Unknown
! ASM: add %i2, %tldm_lo10(Head), %i2 ! encoding: [0xb4,0x06,0b101000AA,A]
! ASM: ! fixup A - offset: 0, value: %tldm_lo10(Head), kind: fixup_sparc_tls_ldm_lo10
add %i2, %tldm_lo10(Head), %i2
! ???error from llvm-mc on the next asm line???
! add %i0, %i2, %o0, %tldm_add(Head)
! OBJDUMP: {{[0-9,a-f]+}}: b0 1e 60 00 xor %i1, 0, %i0
! OBJDUMP: {{[0-9,a-f]+}}: R_SPARC_TLS_LDO_LOX10 Unknown
! ASM: xor %i1, %tldo_lox10(Head), %i0 ! encoding: [0xb0,0x1e,0b011000AA,A]
! ASM: ! fixup A - offset: 0, value: %tldo_lox10(Head), kind: fixup_sparc_tls_ldo_lox10
xor %i1, %tldo_lox10(Head), %i0
! ???error from llvm-mc on the next asm line???
! call __tls_get_addr, %tldm_call(Head)
! nop
! ???error from llvm-mc on the next asm line???
! add %o0, %i0, %i0, %tldo_add(Head)
.type Head,@object
.section .tbss,#alloc,#write,#tls
Head:
.word 0
.size Head, 4

View File

@ -1,151 +0,0 @@
! RUN: llvm-mc %s -arch=sparc -show-encoding | FileCheck %s
! CHECK: ta %i5 ! encoding: [0x91,0xd0,0x00,0x1d]
! CHECK: ta 82 ! encoding: [0x91,0xd0,0x20,0x52]
! CHECK: ta %g1 + %i2 ! encoding: [0x91,0xd0,0x40,0x1a]
! CHECK: ta %i5 + 41 ! encoding: [0x91,0xd7,0x60,0x29]
ta %i5
ta 82
ta %g1 + %i2
ta %i5 + 41
! CHECK: tn %i5 ! encoding: [0x81,0xd0,0x00,0x1d]
! CHECK: tn 82 ! encoding: [0x81,0xd0,0x20,0x52]
! CHECK: tn %g1 + %i2 ! encoding: [0x81,0xd0,0x40,0x1a]
! CHECK: tn %i5 + 41 ! encoding: [0x81,0xd7,0x60,0x29]
tn %i5
tn 82
tn %g1 + %i2
tn %i5 + 41
! CHECK: tne %i5 ! encoding: [0x93,0xd0,0x00,0x1d]
!! tnz should be a synonym for tne
! CHECK: tne %i5 ! encoding: [0x93,0xd0,0x00,0x1d]
! CHECK: tne 82 ! encoding: [0x93,0xd0,0x20,0x52]
! CHECK: tne %g1 + %i2 ! encoding: [0x93,0xd0,0x40,0x1a]
! CHECK: tne %i5 + 41 ! encoding: [0x93,0xd7,0x60,0x29]
tne %i5
tnz %i5
tne 82
tne %g1 + %i2
tne %i5 + 41
! CHECK: te %i5 ! encoding: [0x83,0xd0,0x00,0x1d]
!! tz should be a synonym for te
! CHECK: te %i5 ! encoding: [0x83,0xd0,0x00,0x1d]
! CHECK: te 82 ! encoding: [0x83,0xd0,0x20,0x52]
! CHECK: te %g1 + %i2 ! encoding: [0x83,0xd0,0x40,0x1a]
! CHECK: te %i5 + 41 ! encoding: [0x83,0xd7,0x60,0x29]
te %i5
tz %i5
te 82
te %g1 + %i2
te %i5 + 41
! CHECK: tg %i5 ! encoding: [0x95,0xd0,0x00,0x1d]
! CHECK: tg 82 ! encoding: [0x95,0xd0,0x20,0x52]
! CHECK: tg %g1 + %i2 ! encoding: [0x95,0xd0,0x40,0x1a]
! CHECK: tg %i5 + 41 ! encoding: [0x95,0xd7,0x60,0x29]
tg %i5
tg 82
tg %g1 + %i2
tg %i5 + 41
! CHECK: tle %i5 ! encoding: [0x85,0xd0,0x00,0x1d]
! CHECK: tle 82 ! encoding: [0x85,0xd0,0x20,0x52]
! CHECK: tle %g1 + %i2 ! encoding: [0x85,0xd0,0x40,0x1a]
! CHECK: tle %i5 + 41 ! encoding: [0x85,0xd7,0x60,0x29]
tle %i5
tle 82
tle %g1 + %i2
tle %i5 + 41
! CHECK: tge %i5 ! encoding: [0x97,0xd0,0x00,0x1d]
! CHECK: tge 82 ! encoding: [0x97,0xd0,0x20,0x52]
! CHECK: tge %g1 + %i2 ! encoding: [0x97,0xd0,0x40,0x1a]
! CHECK: tge %i5 + 41 ! encoding: [0x97,0xd7,0x60,0x29]
tge %i5
tge 82
tge %g1 + %i2
tge %i5 + 41
! CHECK: tl %i5 ! encoding: [0x87,0xd0,0x00,0x1d]
! CHECK: tl 82 ! encoding: [0x87,0xd0,0x20,0x52]
! CHECK: tl %g1 + %i2 ! encoding: [0x87,0xd0,0x40,0x1a]
! CHECK: tl %i5 + 41 ! encoding: [0x87,0xd7,0x60,0x29]
tl %i5
tl 82
tl %g1 + %i2
tl %i5 + 41
! CHECK: tgu %i5 ! encoding: [0x99,0xd0,0x00,0x1d]
! CHECK: tgu 82 ! encoding: [0x99,0xd0,0x20,0x52]
! CHECK: tgu %g1 + %i2 ! encoding: [0x99,0xd0,0x40,0x1a]
! CHECK: tgu %i5 + 41 ! encoding: [0x99,0xd7,0x60,0x29]
tgu %i5
tgu 82
tgu %g1 + %i2
tgu %i5 + 41
! CHECK: tleu %i5 ! encoding: [0x89,0xd0,0x00,0x1d]
! CHECK: tleu 82 ! encoding: [0x89,0xd0,0x20,0x52]
! CHECK: tleu %g1 + %i2 ! encoding: [0x89,0xd0,0x40,0x1a]
! CHECK: tleu %i5 + 41 ! encoding: [0x89,0xd7,0x60,0x29]
tleu %i5
tleu 82
tleu %g1 + %i2
tleu %i5 + 41
! CHECK: tcc %i5 ! encoding: [0x9b,0xd0,0x00,0x1d]
! CHECK: tcc 82 ! encoding: [0x9b,0xd0,0x20,0x52]
! CHECK: tcc %g1 + %i2 ! encoding: [0x9b,0xd0,0x40,0x1a]
! CHECK: tcc %i5 + 41 ! encoding: [0x9b,0xd7,0x60,0x29]
tcc %i5
tcc 82
tcc %g1 + %i2
tcc %i5 + 41
! CHECK: tcs %i5 ! encoding: [0x8b,0xd0,0x00,0x1d]
! CHECK: tcs 82 ! encoding: [0x8b,0xd0,0x20,0x52]
! CHECK: tcs %g1 + %i2 ! encoding: [0x8b,0xd0,0x40,0x1a]
! CHECK: tcs %i5 + 41 ! encoding: [0x8b,0xd7,0x60,0x29]
tcs %i5
tcs 82
tcs %g1 + %i2
tcs %i5 + 41
! CHECK: tpos %i5 ! encoding: [0x9d,0xd0,0x00,0x1d]
! CHECK: tpos 82 ! encoding: [0x9d,0xd0,0x20,0x52]
! CHECK: tpos %g1 + %i2 ! encoding: [0x9d,0xd0,0x40,0x1a]
! CHECK: tpos %i5 + 41 ! encoding: [0x9d,0xd7,0x60,0x29]
tpos %i5
tpos 82
tpos %g1 + %i2
tpos %i5 + 41
! CHECK: tneg %i5 ! encoding: [0x8d,0xd0,0x00,0x1d]
! CHECK: tneg 82 ! encoding: [0x8d,0xd0,0x20,0x52]
! CHECK: tneg %g1 + %i2 ! encoding: [0x8d,0xd0,0x40,0x1a]
! CHECK: tneg %i5 + 41 ! encoding: [0x8d,0xd7,0x60,0x29]
tneg %i5
tneg 82
tneg %g1 + %i2
tneg %i5 + 41
! CHECK: tvc %i5 ! encoding: [0x9f,0xd0,0x00,0x1d]
! CHECK: tvc 82 ! encoding: [0x9f,0xd0,0x20,0x52]
! CHECK: tvc %g1 + %i2 ! encoding: [0x9f,0xd0,0x40,0x1a]
! CHECK: tvc %i5 + 41 ! encoding: [0x9f,0xd7,0x60,0x29]
tvc %i5
tvc 82
tvc %g1 + %i2
tvc %i5 + 41
! CHECK: tvs %i5 ! encoding: [0x8f,0xd0,0x00,0x1d]
! CHECK: tvs 82 ! encoding: [0x8f,0xd0,0x20,0x52]
! CHECK: tvs %g1 + %i2 ! encoding: [0x8f,0xd0,0x40,0x1a]
! CHECK: tvs %i5 + 41 ! encoding: [0x8f,0xd7,0x60,0x29]
tvs %i5
tvs 82
tvs %g1 + %i2
tvs %i5 + 41

Some files were not shown because too many files have changed in this diff Show More