1*0a6a1f1dSLionel Sambuc# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding 2>%t0 \
2*0a6a1f1dSLionel Sambuc# RUN:     | FileCheck %s
3*0a6a1f1dSLionel Sambuc# RUN: FileCheck -check-prefix=WARNING %s < %t0
4*0a6a1f1dSLionel Sambuc#
5*0a6a1f1dSLionel Sambuc# RUN: llvm-mc %s -triple=mips64-unknown-freebsd -show-encoding \
6*0a6a1f1dSLionel Sambuc# RUN:     -mattr=-n64,+n32 2>%t1 | FileCheck %s
7*0a6a1f1dSLionel Sambuc# RUN: FileCheck -check-prefix=WARNING %s < %t1
8*0a6a1f1dSLionel Sambuc#
9*0a6a1f1dSLionel Sambuc# Check that the register names are mapped to their correct numbers for n32/n64
10*0a6a1f1dSLionel Sambuc# Second byte of addiu with $zero at rt contains the number of the source
11*0a6a1f1dSLionel Sambuc# register.
12*0a6a1f1dSLionel Sambuc
13*0a6a1f1dSLionel Sambuc.set noat
14*0a6a1f1dSLionel Sambucdaddiu	$zero, $zero, 0     # CHECK: encoding: [0x64,0x00,0x00,0x00]
15*0a6a1f1dSLionel Sambucdaddiu	$at, $zero, 0       # CHECK: encoding: [0x64,0x01,0x00,0x00]
16*0a6a1f1dSLionel Sambucdaddiu	$v0, $zero, 0       # CHECK: encoding: [0x64,0x02,0x00,0x00]
17*0a6a1f1dSLionel Sambucdaddiu	$v1, $zero, 0       # CHECK: encoding: [0x64,0x03,0x00,0x00]
18*0a6a1f1dSLionel Sambucdaddiu	$a0, $zero, 0       # CHECK: encoding: [0x64,0x04,0x00,0x00]
19*0a6a1f1dSLionel Sambucdaddiu	$a1, $zero, 0       # CHECK: encoding: [0x64,0x05,0x00,0x00]
20*0a6a1f1dSLionel Sambucdaddiu	$a2, $zero, 0       # CHECK: encoding: [0x64,0x06,0x00,0x00]
21*0a6a1f1dSLionel Sambucdaddiu	$a3, $zero, 0       # CHECK: encoding: [0x64,0x07,0x00,0x00]
22*0a6a1f1dSLionel Sambucdaddiu	$a4, $zero, 0       # CHECK: encoding: [0x64,0x08,0x00,0x00]
23*0a6a1f1dSLionel Sambucdaddiu	$a5, $zero, 0       # CHECK: encoding: [0x64,0x09,0x00,0x00]
24*0a6a1f1dSLionel Sambucdaddiu	$a6, $zero, 0       # CHECK: encoding: [0x64,0x0a,0x00,0x00]
25*0a6a1f1dSLionel Sambucdaddiu	$a7, $zero, 0       # CHECK: encoding: [0x64,0x0b,0x00,0x00]
26*0a6a1f1dSLionel Sambucdaddiu	$t0, $zero, 0 # [*] # CHECK: encoding: [0x64,0x0c,0x00,0x00]
27*0a6a1f1dSLionel Sambucdaddiu	$t1, $zero, 0 # [*] # CHECK: encoding: [0x64,0x0d,0x00,0x00]
28*0a6a1f1dSLionel Sambucdaddiu	$t2, $zero, 0 # [*] # CHECK: encoding: [0x64,0x0e,0x00,0x00]
29*0a6a1f1dSLionel Sambucdaddiu	$t3, $zero, 0 # [*] # CHECK: encoding: [0x64,0x0f,0x00,0x00]
30*0a6a1f1dSLionel Sambuc# WARNING: mips64-register-names-n32-n64.s:[[@LINE+4]]:9: warning: register names $t4-$t7 are only available in O32.
31*0a6a1f1dSLionel Sambuc# WARNING-NEXT: daddiu  $t4, $zero, 0       # {{CHECK}}: encoding: [0x64,0x0c,0x00,0x00]
32*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          ^~
33*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          Did you mean $t0?
34*0a6a1f1dSLionel Sambucdaddiu	$t4, $zero, 0       # CHECK: encoding: [0x64,0x0c,0x00,0x00]
35*0a6a1f1dSLionel Sambuc# WARNING: mips64-register-names-n32-n64.s:[[@LINE+4]]:9: warning: register names $t4-$t7 are only available in O32.
36*0a6a1f1dSLionel Sambuc# WARNING-NEXT: daddiu  $t5, $zero, 0       # {{CHECK}}: encoding: [0x64,0x0d,0x00,0x00]
37*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          ^~
38*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          Did you mean $t1?
39*0a6a1f1dSLionel Sambucdaddiu	$t5, $zero, 0       # CHECK: encoding: [0x64,0x0d,0x00,0x00]
40*0a6a1f1dSLionel Sambuc# WARNING: mips64-register-names-n32-n64.s:[[@LINE+4]]:9: warning: register names $t4-$t7 are only available in O32.
41*0a6a1f1dSLionel Sambuc# WARNING-NEXT: daddiu  $t6, $zero, 0       # {{CHECK}}: encoding: [0x64,0x0e,0x00,0x00]
42*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          ^~
43*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          Did you mean $t2?
44*0a6a1f1dSLionel Sambucdaddiu	$t6, $zero, 0       # CHECK: encoding: [0x64,0x0e,0x00,0x00]
45*0a6a1f1dSLionel Sambuc# WARNING: mips64-register-names-n32-n64.s:[[@LINE+4]]:9: warning: register names $t4-$t7 are only available in O32.
46*0a6a1f1dSLionel Sambuc# WARNING-NEXT: daddiu  $t7, $zero, 0       # {{CHECK}}: encoding: [0x64,0x0f,0x00,0x00]
47*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          ^~
48*0a6a1f1dSLionel Sambuc# WARNING-NEXT:          Did you mean $t3?
49*0a6a1f1dSLionel Sambucdaddiu	$t7, $zero, 0       # CHECK: encoding: [0x64,0x0f,0x00,0x00]
50*0a6a1f1dSLionel Sambucdaddiu	$s0, $zero, 0       # CHECK: encoding: [0x64,0x10,0x00,0x00]
51*0a6a1f1dSLionel Sambucdaddiu	$s1, $zero, 0       # CHECK: encoding: [0x64,0x11,0x00,0x00]
52*0a6a1f1dSLionel Sambucdaddiu	$s2, $zero, 0       # CHECK: encoding: [0x64,0x12,0x00,0x00]
53*0a6a1f1dSLionel Sambucdaddiu	$s3, $zero, 0       # CHECK: encoding: [0x64,0x13,0x00,0x00]
54*0a6a1f1dSLionel Sambucdaddiu	$s4, $zero, 0       # CHECK: encoding: [0x64,0x14,0x00,0x00]
55*0a6a1f1dSLionel Sambucdaddiu	$s5, $zero, 0       # CHECK: encoding: [0x64,0x15,0x00,0x00]
56*0a6a1f1dSLionel Sambucdaddiu	$s6, $zero, 0       # CHECK: encoding: [0x64,0x16,0x00,0x00]
57*0a6a1f1dSLionel Sambucdaddiu	$s7, $zero, 0       # CHECK: encoding: [0x64,0x17,0x00,0x00]
58*0a6a1f1dSLionel Sambucdaddiu	$t8, $zero, 0       # CHECK: encoding: [0x64,0x18,0x00,0x00]
59*0a6a1f1dSLionel Sambucdaddiu	$t9, $zero, 0       # CHECK: encoding: [0x64,0x19,0x00,0x00]
60*0a6a1f1dSLionel Sambucdaddiu	$kt0, $zero, 0      # CHECK: encoding: [0x64,0x1a,0x00,0x00]
61*0a6a1f1dSLionel Sambucdaddiu	$kt1, $zero, 0      # CHECK: encoding: [0x64,0x1b,0x00,0x00]
62*0a6a1f1dSLionel Sambucdaddiu	$gp, $zero, 0       # CHECK: encoding: [0x64,0x1c,0x00,0x00]
63*0a6a1f1dSLionel Sambucdaddiu	$sp, $zero, 0       # CHECK: encoding: [0x64,0x1d,0x00,0x00]
64*0a6a1f1dSLionel Sambucdaddiu	$s8, $zero, 0       # CHECK: encoding: [0x64,0x1e,0x00,0x00]
65*0a6a1f1dSLionel Sambucdaddiu	$fp, $zero, 0       # CHECK: encoding: [0x64,0x1e,0x00,0x00]
66*0a6a1f1dSLionel Sambucdaddiu	$ra, $zero, 0       # CHECK: encoding: [0x64,0x1f,0x00,0x00]
67*0a6a1f1dSLionel Sambuc
68*0a6a1f1dSLionel Sambuc# [*] - t0-t3 are aliases of t4-t7 for compatibility with both the original
69*0a6a1f1dSLionel Sambuc#       ABI documentation (using t4-t7) and GNU As (using t0-t3)
70