blob: 85a841b805017bad2931212d8223a30ce8f2f384 [file] [log] [blame]
Alex Bradbury59136ff2017-12-15 09:47:01 +00001# RUN: llvm-mc %s -triple=riscv32 -riscv-no-aliases -show-encoding \
Alex Bradburyfea4ac02018-09-06 13:41:04 +00002# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
3# RUN: llvm-mc %s -triple riscv64 -riscv-no-aliases -show-encoding \
4# RUN: | FileCheck -check-prefixes=CHECK-ASM,CHECK-ASM-AND-OBJ %s
5# RUN: llvm-mc -filetype=obj -triple=riscv32 < %s \
6# RUN: | llvm-objdump -riscv-no-aliases -d -r - \
7# RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s
8# RUN: llvm-mc -filetype=obj -triple=riscv64 < %s \
9# RUN: | llvm-objdump -riscv-no-aliases -d -r - \
10# RUN: | FileCheck -check-prefixes=CHECK-OBJ,CHECK-ASM-AND-OBJ %s
Alex Bradbury2fee9ea2017-08-15 13:08:29 +000011
Alex Bradbury6f302b82019-01-10 15:33:17 +000012.equ CONST, 30
13
Alex Bradburyfea4ac02018-09-06 13:41:04 +000014# CHECK-ASM-AND-OBJ: lui a0, 2
15# CHECK-ASM: encoding: [0x37,0x25,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000016lui a0, 2
Alex Bradburyfea4ac02018-09-06 13:41:04 +000017# CHECK-ASM-AND-OBJ: lui s11, 552960
18# CHECK-ASM: encoding: [0xb7,0x0d,0x00,0x87]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000019lui s11, (0x87000000>>12)
Alex Bradburyfea4ac02018-09-06 13:41:04 +000020# CHECK-ASM-AND-OBJ: lui a0, 0
21# CHECK-ASM: encoding: [0x37,0x05,0x00,0x00]
Alex Bradbury9d3f1252017-09-28 08:26:24 +000022lui a0, %hi(2)
Alex Bradburyfea4ac02018-09-06 13:41:04 +000023# CHECK-ASM-AND-OBJ: lui s11, 552960
24# CHECK-ASM: encoding: [0xb7,0x0d,0x00,0x87]
Alex Bradbury9d3f1252017-09-28 08:26:24 +000025lui s11, (0x87000000>>12)
Alex Bradburyfea4ac02018-09-06 13:41:04 +000026# CHECK-ASM-AND-OBJ: lui s11, 552960
27# CHECK-ASM: encoding: [0xb7,0x0d,0x00,0x87]
Alex Bradbury9d3f1252017-09-28 08:26:24 +000028lui s11, %hi(0x87000000)
Alex Bradburyfea4ac02018-09-06 13:41:04 +000029# CHECK-ASM-AND-OBJ: lui t0, 1048575
30# CHECK-ASM: encoding: [0xb7,0xf2,0xff,0xff]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000031lui t0, 1048575
Alex Bradburyfea4ac02018-09-06 13:41:04 +000032# CHECK-ASM-AND-OBJ: lui gp, 0
33# CHECK-ASM: encoding: [0xb7,0x01,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000034lui gp, 0
Alex Bradbury74340f12018-09-18 15:08:35 +000035# CHECK-ASM: lui a0, %hi(foo)
36# CHECK-ASM: encoding: [0x37,0bAAAA0101,A,A]
37# CHECK-OBJ: lui a0, 0
38# CHECK-OBJ: R_RISCV_HI20 foo
39lui a0, %hi(foo)
Alex Bradbury6f302b82019-01-10 15:33:17 +000040# CHECK-ASM-AND-OBJ: lui a0, 30
41# CHECK-ASM: encoding: [0x37,0xe5,0x01,0x00]
42lui a0, CONST
43# CHECK-ASM-AND-OBJ: lui a0, 31
44# CHECK-ASM: encoding: [0x37,0xf5,0x01,0x00]
45lui a0, CONST+1
Alex Bradbury6758ecb2017-09-17 14:27:35 +000046
Alex Bradburyfea4ac02018-09-06 13:41:04 +000047# CHECK-ASM-AND-OBJ: auipc a0, 2
48# CHECK-ASM: encoding: [0x17,0x25,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000049auipc a0, 2
Alex Bradburyfea4ac02018-09-06 13:41:04 +000050# CHECK-ASM-AND-OBJ: auipc s11, 552960
51# CHECK-ASM: encoding: [0x97,0x0d,0x00,0x87]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000052auipc s11, (0x87000000>>12)
Alex Bradburyfea4ac02018-09-06 13:41:04 +000053# CHECK-ASM-AND-OBJ: auipc t0, 1048575
54# CHECK-ASM: encoding: [0x97,0xf2,0xff,0xff]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000055auipc t0, 1048575
Alex Bradburyfea4ac02018-09-06 13:41:04 +000056# CHECK-ASM-AND-OBJ: auipc gp, 0
57# CHECK-ASM: encoding: [0x97,0x01,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000058auipc gp, 0
Alex Bradbury74340f12018-09-18 15:08:35 +000059# CHECK-ASM: auipc a0, %pcrel_hi(foo)
60# CHECK-ASM: encoding: [0x17,0bAAAA0101,A,A]
61# CHECK-OBJ: auipc a0, 0
62# CHECK-OBJ: R_RISCV_PCREL_HI20 foo
63auipc a0, %pcrel_hi(foo)
Alex Bradbury6f302b82019-01-10 15:33:17 +000064# CHECK-ASM-AND-OBJ: auipc a0, 30
65# CHECK-ASM: encoding: [0x17,0xe5,0x01,0x00]
66auipc a0, CONST
Alex Bradbury6758ecb2017-09-17 14:27:35 +000067
Alex Bradburyfea4ac02018-09-06 13:41:04 +000068# CHECK-ASM-AND-OBJ: jal a2, 1048574
69# CHECK-ASM: encoding: [0x6f,0xf6,0xff,0x7f]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000070jal a2, 1048574
Alex Bradburyfea4ac02018-09-06 13:41:04 +000071# CHECK-ASM-AND-OBJ: jal a3, 256
72# CHECK-ASM: encoding: [0xef,0x06,0x00,0x10]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000073jal a3, 256
Alex Bradbury226f3ef2018-09-20 08:10:35 +000074# CHECK-ASM: jal a0, foo
75# CHECK-ASM: encoding: [0x6f,0bAAAA0101,A,A]
76# CHECK-OBJ: jal a0, 0
77# CHECK-OBJ: R_RISCV_JAL foo
78jal a0, foo
79# CHECK-ASM: jal a0, a0
80# CHECK-ASM: encoding: [0x6f,0bAAAA0101,A,A]
81# CHECK-OBJ: jal a0, 0
82# CHECK-OBJ: R_RISCV_JAL a0
83jal a0, a0
Alex Bradbury6f302b82019-01-10 15:33:17 +000084# CHECK-ASM-AND-OBJ: jal a0, 30
85# CHECK-ASM: encoding: [0x6f,0x05,0xe0,0x01]
86jal a0, CONST
Alex Bradbury6758ecb2017-09-17 14:27:35 +000087
Alex Bradburyfea4ac02018-09-06 13:41:04 +000088# CHECK-ASM-AND-OBJ: jalr a0, a1, -2048
89# CHECK-ASM: encoding: [0x67,0x85,0x05,0x80]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000090jalr a0, a1, -2048
Alex Bradburyfea4ac02018-09-06 13:41:04 +000091# CHECK-ASM-AND-OBJ: jalr a0, a1, -2048
92# CHECK-ASM: encoding: [0x67,0x85,0x05,0x80]
Alex Bradbury9d3f1252017-09-28 08:26:24 +000093jalr a0, a1, %lo(2048)
Alex Bradburyfea4ac02018-09-06 13:41:04 +000094# CHECK-ASM-AND-OBJ: jalr t2, t1, 2047
95# CHECK-ASM: encoding: [0xe7,0x03,0xf3,0x7f]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000096jalr t2, t1, 2047
Alex Bradburyfea4ac02018-09-06 13:41:04 +000097# CHECK-ASM-AND-OBJ: jalr sp, zero, 256
98# CHECK-ASM: encoding: [0x67,0x01,0x00,0x10]
Alex Bradbury6758ecb2017-09-17 14:27:35 +000099jalr sp, zero, 256
Alex Bradbury6f302b82019-01-10 15:33:17 +0000100# CHECK-ASM-AND-OBJ: jalr a1, a2, 30
101# CHECK-ASM: encoding: [0xe7,0x05,0xe6,0x01]
102jalr a1, a2, CONST
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000103
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000104# CHECK-ASM-AND-OBJ: beq s1, s1, 102
105# CHECK-ASM: encoding: [0x63,0x83,0x94,0x06]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000106beq s1, s1, 102
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000107# CHECK-ASM-AND-OBJ: bne a4, a5, -4096
108# CHECK-ASM: encoding: [0x63,0x10,0xf7,0x80]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000109bne a4, a5, -4096
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000110# CHECK-ASM-AND-OBJ: blt sp, gp, 4094
111# CHECK-ASM: encoding: [0xe3,0x4f,0x31,0x7e]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000112blt sp, gp, 4094
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000113# CHECK-ASM-AND-OBJ: bge s2, ra, -224
114# CHECK-ASM: encoding: [0xe3,0x50,0x19,0xf2]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000115bge s2, ra, -224
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000116# CHECK-ASM-AND-OBJ: bltu zero, zero, 0
117# CHECK-ASM: encoding: [0x63,0x60,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000118bltu zero, zero, 0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000119# CHECK-ASM-AND-OBJ: bgeu s8, sp, 512
120# CHECK-ASM: encoding: [0x63,0x70,0x2c,0x20]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000121bgeu s8, sp, 512
Alex Bradbury6f302b82019-01-10 15:33:17 +0000122# CHECK-ASM-AND-OBJ: bgeu t0, t1, 30
123# CHECK-ASM: encoding: [0x63,0xff,0x62,0x00]
124bgeu t0, t1, CONST
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000125
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000126# CHECK-ASM-AND-OBJ: lb s3, 4(ra)
127# CHECK-ASM: encoding: [0x83,0x89,0x40,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000128lb s3, 4(ra)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000129# CHECK-ASM-AND-OBJ: lb s3, 4(ra)
130# CHECK-ASM: encoding: [0x83,0x89,0x40,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000131lb s3, +4(ra)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000132# CHECK-ASM-AND-OBJ: lh t1, -2048(zero)
133# CHECK-ASM: encoding: [0x03,0x13,0x00,0x80]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000134lh t1, -2048(zero)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000135# CHECK-ASM-AND-OBJ: lh t1, -2048(zero)
136# CHECK-ASM: encoding: [0x03,0x13,0x00,0x80]
Alex Bradbury9d3f1252017-09-28 08:26:24 +0000137lh t1, %lo(2048)(zero)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000138# CHECK-ASM-AND-OBJ: lh sp, 2047(a0)
139# CHECK-ASM: encoding: [0x03,0x11,0xf5,0x7f]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000140lh sp, 2047(a0)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000141# CHECK-ASM-AND-OBJ: lw a0, 97(a2)
142# CHECK-ASM: encoding: [0x03,0x25,0x16,0x06]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000143lw a0, 97(a2)
Alex Bradbury7d0e18d2018-09-18 15:13:29 +0000144# CHECK-ASM: lbu s5, %lo(foo)(s6)
145# CHECK-ASM: encoding: [0x83,0x4a,0bAAAA1011,A]
146# CHECK-OBJ: lbu s5, 0(s6)
147# CHECK-OBJ: R_RISCV_LO12
148lbu s5, %lo(foo)(s6)
149# CHECK-ASM: lhu t3, %pcrel_lo(foo)(t3)
150# CHECK-ASM: encoding: [0x03,0x5e,0bAAAA1110,A]
151# CHECK-OBJ: lhu t3, 0(t3)
152# CHECK-OBJ: R_RISCV_PCREL_LO12
153lhu t3, %pcrel_lo(foo)(t3)
Alex Bradbury6f302b82019-01-10 15:33:17 +0000154# CHECK-ASM-AND-OBJ: lb t0, 30(t1)
155# CHECK-ASM: encoding: [0x83,0x02,0xe3,0x01]
156lb t0, CONST(t1)
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000157
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000158# CHECK-ASM-AND-OBJ: sb a0, 2047(a2)
159# CHECK-ASM: encoding: [0xa3,0x0f,0xa6,0x7e]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000160sb a0, 2047(a2)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000161# CHECK-ASM-AND-OBJ: sh t3, -2048(t5)
162# CHECK-ASM: encoding: [0x23,0x10,0xcf,0x81]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000163sh t3, -2048(t5)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000164# CHECK-ASM-AND-OBJ: sh t3, -2048(t5)
165# CHECK-ASM: encoding: [0x23,0x10,0xcf,0x81]
Alex Bradbury9d3f1252017-09-28 08:26:24 +0000166sh t3, %lo(2048)(t5)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000167# CHECK-ASM-AND-OBJ: sw ra, 999(zero)
168# CHECK-ASM: encoding: [0xa3,0x23,0x10,0x3e]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000169sw ra, 999(zero)
Alex Bradbury6f302b82019-01-10 15:33:17 +0000170# CHECK-ASM-AND-OBJ: sw a0, 30(t0)
171# CHECK-ASM: encoding: [0x23,0xaf,0xa2,0x00]
172sw a0, CONST(t0)
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000173
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000174# CHECK-ASM-AND-OBJ: addi ra, sp, 2
175# CHECK-ASM: encoding: [0x93,0x00,0x21,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000176addi ra, sp, 2
Alex Bradbury7d0e18d2018-09-18 15:13:29 +0000177# CHECK-ASM: addi ra, sp, %lo(foo)
178# CHECK-ASM: encoding: [0x93,0x00,0bAAAA0001,A]
179# CHECK-OBJ: addi ra, sp, 0
180# CHECK-OBJ: R_RISCV_LO12
181addi ra, sp, %lo(foo)
Alex Bradbury6f302b82019-01-10 15:33:17 +0000182# CHECK-ASM-AND-OBJ: addi ra, sp, 30
183# CHECK-ASM: encoding: [0x93,0x00,0xe1,0x01]
184addi ra, sp, CONST
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000185# CHECK-ASM-AND-OBJ: slti a0, a2, -20
186# CHECK-ASM: encoding: [0x13,0x25,0xc6,0xfe]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000187slti a0, a2, -20
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000188# CHECK-ASM-AND-OBJ: sltiu s2, s3, 80
189# CHECK-ASM: encoding: [0x13,0xb9,0x09,0x05]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000190sltiu s2, s3, 0x50
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000191# CHECK-ASM-AND-OBJ: xori tp, t1, -99
192# CHECK-ASM: encoding: [0x13,0x42,0xd3,0xf9]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000193xori tp, t1, -99
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000194# CHECK-ASM-AND-OBJ: ori a0, a1, -2048
195# CHECK-ASM: encoding: [0x13,0xe5,0x05,0x80]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000196ori a0, a1, -2048
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000197# CHECK-ASM-AND-OBJ: ori a0, a1, -2048
198# CHECK-ASM: encoding: [0x13,0xe5,0x05,0x80]
Alex Bradbury9d3f1252017-09-28 08:26:24 +0000199ori a0, a1, %lo(2048)
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000200# CHECK-ASM-AND-OBJ: andi ra, sp, 2047
201# CHECK-ASM: encoding: [0x93,0x70,0xf1,0x7f]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000202andi ra, sp, 2047
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000203# CHECK-ASM-AND-OBJ: andi ra, sp, 2047
204# CHECK-ASM: encoding: [0x93,0x70,0xf1,0x7f]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000205andi x1, x2, 2047
206
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000207# CHECK-ASM-AND-OBJ: slli t3, t3, 31
208# CHECK-ASM: encoding: [0x13,0x1e,0xfe,0x01]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000209slli t3, t3, 31
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000210# CHECK-ASM-AND-OBJ: srli a0, a4, 0
211# CHECK-ASM: encoding: [0x13,0x55,0x07,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000212srli a0, a4, 0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000213# CHECK-ASM-AND-OBJ: srai a2, sp, 15
214# CHECK-ASM: encoding: [0x13,0x56,0xf1,0x40]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000215srai a2, sp, 15
Alex Bradbury6f302b82019-01-10 15:33:17 +0000216# CHECK-ASM-AND-OBJ: slli t3, t3, 30
217# CHECK-ASM: encoding: [0x13,0x1e,0xee,0x01]
218slli t3, t3, CONST
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000219
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000220# CHECK-ASM-AND-OBJ: add ra, zero, zero
221# CHECK-ASM: encoding: [0xb3,0x00,0x00,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000222add ra, zero, zero
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000223# CHECK-ASM-AND-OBJ: add ra, zero, zero
224# CHECK-ASM: encoding: [0xb3,0x00,0x00,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000225add x1, x0, x0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000226# CHECK-ASM-AND-OBJ: sub t0, t2, t1
227# CHECK-ASM: encoding: [0xb3,0x82,0x63,0x40]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000228sub t0, t2, t1
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000229# CHECK-ASM-AND-OBJ: sll a5, a4, a3
230# CHECK-ASM: encoding: [0xb3,0x17,0xd7,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000231sll a5, a4, a3
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000232# CHECK-ASM-AND-OBJ: slt s0, s0, s0
233# CHECK-ASM: encoding: [0x33,0x24,0x84,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000234slt s0, s0, s0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000235# CHECK-ASM-AND-OBJ: sltu gp, a0, a1
236# CHECK-ASM: encoding: [0xb3,0x31,0xb5,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000237sltu gp, a0, a1
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000238# CHECK-ASM-AND-OBJ: xor s2, s2, s8
239# CHECK-ASM: encoding: [0x33,0x49,0x89,0x01]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000240xor s2, s2, s8
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000241# CHECK-ASM-AND-OBJ: xor s2, s2, s8
242# CHECK-ASM: encoding: [0x33,0x49,0x89,0x01]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000243xor x18, x18, x24
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000244# CHECK-ASM-AND-OBJ: srl a0, s0, t0
245# CHECK-ASM: encoding: [0x33,0x55,0x54,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000246srl a0, s0, t0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000247# CHECK-ASM-AND-OBJ: sra t0, s2, zero
248# CHECK-ASM: encoding: [0xb3,0x52,0x09,0x40]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000249sra t0, s2, zero
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000250# CHECK-ASM-AND-OBJ: or s10, t1, ra
251# CHECK-ASM: encoding: [0x33,0x6d,0x13,0x00]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000252or s10, t1, ra
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000253# CHECK-ASM-AND-OBJ: and a0, s2, s3
254# CHECK-ASM: encoding: [0x33,0x75,0x39,0x01]
Alex Bradbury2fee9ea2017-08-15 13:08:29 +0000255and a0, s2, s3
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000256
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000257# CHECK-ASM-AND-OBJ: fence iorw, iorw
258# CHECK-ASM: encoding: [0x0f,0x00,0xf0,0x0f]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000259fence iorw, iorw
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000260# CHECK-ASM-AND-OBJ: fence io, rw
261# CHECK-ASM: encoding: [0x0f,0x00,0x30,0x0c]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000262fence io, rw
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000263# CHECK-ASM-AND-OBJ: fence r, w
264# CHECK-ASM: encoding: [0x0f,0x00,0x10,0x02]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000265fence r,w
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000266# CHECK-ASM-AND-OBJ: fence w, ir
267# CHECK-ASM: encoding: [0x0f,0x00,0xa0,0x01]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000268fence w,ir
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000269# CHECK-ASM-AND-OBJ: fence.tso
270# CHECK-ASM: encoding: [0x0f,0x00,0x30,0x83]
Alex Bradburyed53ca72018-06-08 10:39:05 +0000271fence.tso
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000272
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000273# CHECK-ASM-AND-OBJ: fence.i
274# CHECK-ASM: encoding: [0x0f,0x10,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000275fence.i
276
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000277# CHECK-ASM-AND-OBJ: ecall
278# CHECK-ASM: encoding: [0x73,0x00,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000279ecall
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000280# CHECK-ASM-AND-OBJ: ebreak
281# CHECK-ASM: encoding: [0x73,0x00,0x10,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000282ebreak
Alex Bradbury26403de2018-11-30 13:39:17 +0000283# CHECK-ASM-AND-OBJ: unimp
284# CHECK-ASM: encoding: [0x73,0x10,0x00,0xc0]
285unimp
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000286
Alex Bradbury6f302b82019-01-10 15:33:17 +0000287.equ CONST, 16
288
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000289# CHECK-ASM-AND-OBJ: csrrw t0, 4095, t1
290# CHECK-ASM: encoding: [0xf3,0x12,0xf3,0xff]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000291csrrw t0, 0xfff, t1
Ana Pazos9d6c5532018-10-04 21:50:54 +0000292# CHECK-ASM-AND-OBJ: csrrs s0, cycle, zero
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000293# CHECK-ASM: encoding: [0x73,0x24,0x00,0xc0]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000294csrrs s0, 0xc00, x0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000295# CHECK-ASM-AND-OBJ: csrrs s3, 1, s5
296# CHECK-ASM: encoding: [0xf3,0xa9,0x1a,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000297csrrs s3, 0x001, s5
Ana Pazos9d6c5532018-10-04 21:50:54 +0000298# CHECK-ASM-AND-OBJ: csrrc sp, ustatus, ra
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000299# CHECK-ASM: encoding: [0x73,0xb1,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000300csrrc sp, 0x000, ra
Ana Pazos9d6c5532018-10-04 21:50:54 +0000301# CHECK-ASM-AND-OBJ: csrrwi a5, ustatus, 0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000302# CHECK-ASM: encoding: [0xf3,0x57,0x00,0x00]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000303csrrwi a5, 0x000, 0
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000304# CHECK-ASM-AND-OBJ: csrrsi t2, 4095, 31
305# CHECK-ASM: encoding: [0xf3,0xe3,0xff,0xff]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000306csrrsi t2, 0xfff, 31
Ana Pazos9d6c5532018-10-04 21:50:54 +0000307# CHECK-ASM-AND-OBJ: csrrci t1, sscratch, 5
Alex Bradburyfea4ac02018-09-06 13:41:04 +0000308# CHECK-ASM: encoding: [0x73,0xf3,0x02,0x14]
Alex Bradbury6758ecb2017-09-17 14:27:35 +0000309csrrci t1, 0x140, 5