Tom Stellard | 8904970 | 2016-06-15 02:54:14 +0000 | [diff] [blame] | 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 |
Dmitry Preobrazhensky | e514724 | 2017-04-07 13:07:13 +0000 | [diff] [blame] | 14 | // VI: ds_gws_init v2 gds ; encoding: [0x00,0x00,0x33,0xd9,0x00,0x02,0x00,0x00] |
Tom Stellard | 8904970 | 2016-06-15 02:54:14 +0000 | [diff] [blame] | 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 |
Tom Stellard | 82785e9 | 2016-06-15 03:09:39 +0000 | [diff] [blame] | 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] |
Dmitry Preobrazhensky | 4b11a78 | 2017-08-04 13:55:24 +0000 | [diff] [blame] | 42 | |
Dmitry Preobrazhensky | 32c6b5c | 2018-06-13 17:02:03 +0000 | [diff] [blame] | 43 | v_mul_f32 v0, foo+2, v2 |
| 44 | // VI: v_mul_f32_e32 v0, 514, v2 ; encoding: [0xff,0x04,0x00,0x0a,0x02,0x02,0x00,0x00] |
| 45 | |
Dmitry Preobrazhensky | 4b11a78 | 2017-08-04 13:55:24 +0000 | [diff] [blame] | 46 | BB1: |
| 47 | v_nop_e64 |
| 48 | BB2: |
| 49 | s_sub_u32 vcc_lo, vcc_lo, (BB2+4)-BB1 |
| 50 | // VI: s_sub_u32 vcc_lo, vcc_lo, (BB2+4)-BB1 ; encoding: [0x6a,0xff,0xea,0x80,A,A,A,A] |
| 51 | // VI-NEXT: ; fixup A - offset: 4, value: (BB2+4)-BB1, kind: FK_Data_4 |
Dmitry Preobrazhensky | 471adf7 | 2017-12-22 18:03:35 +0000 | [diff] [blame] | 52 | |
| 53 | t=1 |
| 54 | s_sub_u32 s0, s0, -t |
| 55 | // VI: s_sub_u32 s0, s0, -1 ; encoding: [0x00,0xc1,0x80,0x80] |
| 56 | |
| 57 | t=-1 |
| 58 | s_sub_u32 s0, s0, -t |
| 59 | // VI: s_sub_u32 s0, s0, 1 ; encoding: [0x00,0x81,0x80,0x80] |