SGX543: Difference between revisions
Jump to navigation
Jump to search
Line 434: | Line 434: | ||
'''Fields:''' | '''Fields:''' | ||
data_format: | data_format: | ||
Line 459: | Line 448: | ||
opcode2 (depends on op_sel): | opcode2 (depends on op_sel): | ||
{| | |||
|- | |||
| | |||
{| class="wikitable" | {| class="wikitable" | ||
|- | |- | ||
Line 479: | Line 471: | ||
| 0 || 1 || 1 || 1 || rcp | | 0 || 1 || 1 || 1 || rcp | ||
|} | |} | ||
|| | |||
{| class="wikitable" | {| class="wikitable" | ||
Line 499: | Line 492: | ||
|- | |- | ||
| 1 || 1 || 1 || 1 || '''invalid''' | | 1 || 1 || 1 || 1 || '''invalid''' | ||
|} | |||
|} | |} | ||
Revision as of 02:23, 9 February 2018
Instruction set
It looks like instructions are 8 bytes long. Roughly speaking - first 4 bytes contain opcode and addressing mode. Second 4 bytes contain operands encoding.
Bit encoding used in this reference.
value | meaning |
---|---|
0 | bit clear |
1 | bit set |
x | dont care |
? | unknown |
0x00000000 - 0x08000000
Instructions: mad
Encoding:
|
|
|
|
Fields:
data_format:
|
predicate:
|
Examples:
mad.f32 p0 mad.f32 !p0 mad.f32 Pn mad.f32 mad.f16 p0 mad.f16 !p0 mad.f16 Pn mad.f16
0x08000000 - 0x10000000
Instructions: mul.f32
Encoding:
|
|
|
|
Fields:
predicate:
2 | 1 | 0 | value |
---|---|---|---|
0 | 0 | 0 | |
0 | 0 | 1 | p0 |
0 | 1 | 0 | p1 |
0 | 1 | 1 | p2 |
1 | 0 | 0 | !p0 |
1 | 0 | 1 | !p1 |
1 | 1 | 0 | !p2 |
1 | 1 | 1 | Pn |
Examples:
mul.f32 p0 mul.f32 p1 mul.f32 p2 mul.f32 !p0 mul.f32 !p1 mul.f32 !p2 mul.f32 Pn mul.f32
0x10000000 - 0x18000000
Instructions: mul.f16
Encoding:
|
|
|
|
Fields:
predicate:
2 | 1 | 0 | value |
---|---|---|---|
0 | 0 | 0 | |
0 | 0 | 1 | p0 |
0 | 1 | 0 | p1 |
0 | 1 | 1 | p2 |
1 | 0 | 0 | !p0 |
1 | 0 | 1 | !p1 |
1 | 1 | 0 | !p2 |
1 | 1 | 1 | Pn |
Examples:
mul.f16 p0 mul.f16 p1 mul.f16 p2 mul.f16 !p0 mul.f16 !p1 mul.f16 !p2 mul.f16 Pn mul.f16
0x18000000 - 0x20000000
Instructions: dot.f32, mad.f32
Encoding:
|
|
|
|
Fields:
opcode2:
|
predicate:
|
Examples:
dot.f32 p0 dot.f32 p1 dot.f32 p2 dot.f32 !p0 dot.f32 !p1 dot.f32 !p2 dot.f32 Pn dot.f32 mad.f32 p0 mad.f32 p1 mad.f32 p2 mad.f32 !p0 mad.f32 !p1 mad.f32 !p2 mad.f32 Pn mad.f32
0x20000000 - 0x28000000
|
|
|
|
Notes:
Having bit 3 in byte 2 set to 0 produces invalid instruction
Fields:
data_format:
5 | value |
---|---|
0 | f32 |
1 | f16 |
opcode2 (depends on op_sel):
|
|
0x28000000 - 0x30000000
|
|
|
|
0x30000000 - 0x38000000
|
|
|
|
0x38000000 - 0x40000000
|
|
|
|
0x40000000 - 0x48000000
|
|
|
|
0x48000000 - 0x50000000
|
|
|
|
0x50000000 - 0x58000000
|
|
|
|
0x58000000 - 0x60000000
|
|
|
|
0x60000000 - 0x68000000
|
|
|
|
0x68000000 - 0x70000000
|
|
|
|
0x70000000 - 0x78000000
|
|
|
|
0x78000000 - 0x80000000
|
|
|
|
0x80000000 - 0x88000000
|
|
|
|
0x88000000 - 0x90000000
|
|
|
|
0x90000000 - 0x98000000
|
|
|
|
0x98000000 - 0xA0000000
|
|
|
|
0xA0000000 - 0xA8000000
|
|
|
|
0xA8000000 - 0xB0000000
|
|
|
|
0xB0000000 - 0xB8000000
|
|
|
|
0xB8000000 - 0xC0000000
|
|
|
|
0xC0000000 - 0xC8000000
|
|
|
|
0xC8000000 - 0xD0000000
|
|
|
|
0xD0000000 - 0xD8000000
|
|
|
|
0xD8000000 - 0xE0000000
|
|
|
|
0xE0000000 - 0xE8000000
|
|
|
|
0xE8000000 - 0xF0000000
|
|
|
|
0xF0000000 - 0xF8000000
|
|
|
|
0xF8000000 - 0xFF000000
|
|
|
|