1 // RUN: llvm-mc -arch=amdgcn -mcpu=fiji -show-encoding %s | FileCheck %s --check-prefix=VI 2 3 4 .globl global 5 .globl gds 6 7 // Parse a global expression 8 s_mov_b32 s0, global 9 // VI: s_mov_b32 s0, global ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] 10 // VI-NEXT: ; fixup A - offset: 4, value: global, kind: FK_PCRel_4 11 12 // Use a token with the same name as a global 13 ds_gws_init v2 gds 14 // VI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x33,0xd8,0x02,0x00,0x00,0x00] 15 16 // Use a global with the same name as a token 17 s_mov_b32 s0, gds 18 // VI: s_mov_b32 s0, gds ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] 19 // VI-NEXT: ; fixup A - offset: 4, value: gds, kind: FK_PCRel_4 20 21 // Use a binary expression 22 s_mov_b32 s0, gds+4 23 // VI: s_mov_b32 s0, gds+4 ; encoding: [0xff,0x00,0x80,0xbe,A,A,A,A] 24 // VI-NEXT: ; fixup A - offset: 4, value: gds+4, kind: FK_PCRel_4 25 26 // Consecutive instructions with no blank line in between to make sure we 27 // don't call Lex() too many times. 28 s_add_u32 s0, s0, global+4 29 s_addc_u32 s1, s1, 0 30 // VI: s_add_u32 s0, s0, global+4 31 // VI: s_addc_u32 s1, s1, 0 32 33 // Use a computed expression that results in an inline immediate. 34 .set foo, 4 35 s_mov_b32 s0, foo+2 36 // VI: s_mov_b32 s0, 6 ; encoding: [0x86,0x00,0x80,0xbe] 37 38 // Use a computed expression that results in a non-inline immediate. 39 .set foo, 512 40 s_mov_b32 s0, foo+2 41 // VI: s_mov_b32 s0, 514 ; encoding: [0xff,0x00,0x80,0xbe,0x02,0x02,0x00,0x00] 42