diff options
Diffstat (limited to 'test/MC/AMDGPU/expressions.s')
-rw-r--r-- | test/MC/AMDGPU/expressions.s | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/test/MC/AMDGPU/expressions.s b/test/MC/AMDGPU/expressions.s new file mode 100644 index 0000000000000..9fc956628f1fd --- /dev/null +++ b/test/MC/AMDGPU/expressions.s @@ -0,0 +1,41 @@ +// RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck %s --check-prefix=VI + + +.globl global +.globl gds + +// Parse a global expression +s_mov_b32 s0, global +// VI: s_mov_b32 s0, global ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] +// VI-NEXT: ; fixup A - offset: 4, value: global, kind: FK_PCRel_4 + +// Use a token with the same name as a global +ds_gws_init v2 gds +// VI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x33,0xd8,0x02,0x00,0x00,0x00] + +// Use a global with the same name as a token +s_mov_b32 s0, gds +// VI: s_mov_b32 s0, gds ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] +// VI-NEXT: ; fixup A - offset: 4, value: gds, kind: FK_PCRel_4 + +// Use a binary expression +s_mov_b32 s0, gds+4 +// VI: s_mov_b32 s0, gds+4 ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] +// VI-NEXT: ; fixup A - offset: 4, value: gds+4, kind: FK_PCRel_4 + +// Consecutive instructions with no blank line in between to make sure we +// don't call Lex() too many times. +s_add_u32 s0, s0, global+4 +s_addc_u32 s1, s1, 0 +// VI: s_add_u32 s0, s0, global+4 +// VI: s_addc_u32 s1, s1, 0 + +// Use a computed expression that results in an inline immediate. +.set foo, 4 +s_mov_b32 s0, foo+2 +// VI: s_mov_b32 s0, 6 ; encoding: [0x86,0x00,0x80,0xbe] + +// Use a computed expression that results in a non-inline immediate. +.set foo, 512 +s_mov_b32 s0, foo+2 +// VI: s_mov_b32 s0, 514 ; encoding: [0xff,0x00,0x80,0xbe,0x02,0x02,0x00,0x00] |