144 lines · plain
1// RUN: llvm-mc -triple=amdgcn -show-encoding -mcpu=gfx1200 %s | FileCheck --check-prefix=GFX12 %s2 3//4// Test op_sel/op_sel_hi5//6 7v_pk_add_u16 v1, v2, v38// GFX12: encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x18]9 10v_pk_add_u16 v1, v2, v3 op_sel:[0,0]11// GFX12: v_pk_add_u16 v1, v2, v3 ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x18]12 13v_pk_add_u16 v1, v2, v3 op_sel_hi:[1,1]14// GFX12: v_pk_add_u16 v1, v2, v3 ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x18]15 16v_pk_add_u16 v1, v2, v3 op_sel:[0,0] op_sel_hi:[1,1]17// GFX12: v_pk_add_u16 v1, v2, v3 ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x18]18 19v_pk_add_u16 v1, v2, v3 op_sel_hi:[0,0]20// GFX12: v_pk_add_u16 v1, v2, v3 op_sel_hi:[0,0] ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x00]21 22v_pk_add_u16 v1, v2, v3 op_sel:[0,0] op_sel_hi:[0,0]23// GFX12: v_pk_add_u16 v1, v2, v3 op_sel_hi:[0,0] ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x00]24 25v_pk_add_u16 v1, v2, v3 op_sel:[1,0]26// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[1,0] ; encoding: [0x01,0x48,0x0a,0xcc,0x02,0x07,0x02,0x18]27 28v_pk_add_u16 v1, v2, v3 op_sel:[0,1]29// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[0,1] ; encoding: [0x01,0x50,0x0a,0xcc,0x02,0x07,0x02,0x18]30 31v_pk_add_u16 v1, v2, v3 op_sel:[1,1]32// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[1,1] ; encoding: [0x01,0x58,0x0a,0xcc,0x02,0x07,0x02,0x18]33 34v_pk_add_u16 v1, v2, v3 op_sel_hi:[0,1]35// GFX12: v_pk_add_u16 v1, v2, v3 op_sel_hi:[0,1] ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x10]36 37v_pk_add_u16 v1, v2, v3 op_sel_hi:[1,0]38// GFX12: v_pk_add_u16 v1, v2, v3 op_sel_hi:[1,0] ; encoding: [0x01,0x40,0x0a,0xcc,0x02,0x07,0x02,0x08]39 40v_pk_add_u16 v1, v2, v3 op_sel:[1,1] op_sel_hi:[1,1]41// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[1,1] ; encoding: [0x01,0x58,0x0a,0xcc,0x02,0x07,0x02,0x18]42 43v_pk_add_u16 v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0]44// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[1,0] op_sel_hi:[1,0] ; encoding: [0x01,0x48,0x0a,0xcc,0x02,0x07,0x02,0x08]45 46v_pk_add_u16 v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1]47// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[0,1] op_sel_hi:[0,1] ; encoding: [0x01,0x50,0x0a,0xcc,0x02,0x07,0x02,0x10]48 49v_pk_add_u16 v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1]50// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[1,0] op_sel_hi:[0,1] ; encoding: [0x01,0x48,0x0a,0xcc,0x02,0x07,0x02,0x10]51 52v_pk_add_u16 v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0]53// GFX12: v_pk_add_u16 v1, v2, v3 op_sel:[0,1] op_sel_hi:[1,0] ; encoding: [0x01,0x50,0x0a,0xcc,0x02,0x07,0x02,0x08]54 55//56// Test src2 op_sel/op_sel_hi57//58 59v_pk_fma_f16 v8, v0, s0, v160// GFX12: encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x1c]61 62v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[0,0,0] neg_hi:[0,0,0]63// GFX12: v_pk_fma_f16 v8, v0, s0, v1 ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x1c]64 65v_pk_fma_f16 v8, v0, s0, v1 op_sel:[0,0,0] op_sel_hi:[1,1,1] neg_lo:[0,0,0] neg_hi:[0,0,0]66// GFX12: v_pk_fma_f16 v8, v0, s0, v1 ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x1c]67 68v_pk_fma_f16 v8, v0, s0, v1 op_sel:[0,0,0] op_sel_hi:[1,1,1]69// GFX12: v_pk_fma_f16 v8, v0, s0, v1 ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x1c]70 71v_pk_fma_f16 v8, v0, s0, v1 op_sel:[0,0,0] op_sel_hi:[0,0,0]72// GFX12: v_pk_fma_f16 v8, v0, s0, v1 op_sel_hi:[0,0,0] ; encoding: [0x08,0x00,0x0e,0xcc,0x00,0x01,0x04,0x04]73 74v_pk_fma_f16 v8, v0, s0, v1 op_sel:[0,0,1] op_sel_hi:[0,0,1]75// GFX12: v_pk_fma_f16 v8, v0, s0, v1 op_sel:[0,0,1] op_sel_hi:[0,0,1] ; encoding: [0x08,0x60,0x0e,0xcc,0x00,0x01,0x04,0x04]76 77//78// Test neg_lo/neg_hi79//80 81v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[1,1,1]82// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[1,1,1] ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0xfc]83 84v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[1,1,1]85// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[1,1,1] ; encoding: [0x08,0x47,0x0e,0xcc,0x00,0x01,0x04,0x1c]86 87v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[1,1,1] neg_hi:[1,1,1]88// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[1,1,1] neg_hi:[1,1,1] ; encoding: [0x08,0x47,0x0e,0xcc,0x00,0x01,0x04,0xfc]89 90v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[1,0,0]91// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[1,0,0] ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x3c]92 93v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[0,1,0]94// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[0,1,0] ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x5c]95 96v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[0,0,1]97// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_lo:[0,0,1] ; encoding: [0x08,0x40,0x0e,0xcc,0x00,0x01,0x04,0x9c]98 99v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[1,0,0]100// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[1,0,0] ; encoding: [0x08,0x41,0x0e,0xcc,0x00,0x01,0x04,0x1c]101 102v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[0,1,0]103// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[0,1,0] ; encoding: [0x08,0x42,0x0e,0xcc,0x00,0x01,0x04,0x1c]104 105v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[0,0,1]106// GFX12: v_pk_fma_f16 v8, v0, s0, v1 neg_hi:[0,0,1] ; encoding: [0x08,0x44,0x0e,0xcc,0x00,0x01,0x04,0x1c]107 108//109// DOT110//111 112v_dot4_i32_iu8 v3, v4, v5, v6113// GFX12: v_dot4_i32_iu8 v3, v4, v5, v6 ; encoding: [0x03,0x40,0x16,0xcc,0x04,0x0b,0x1a,0x1c]114 115v_dot4_i32_iu8 v3, v4, v5, 0xf neg_lo:[1,1]116// GFX12: v_dot4_i32_iu8 v3, v4, v5, 15 neg_lo:[1,1,0] ; encoding: [0x03,0x40,0x16,0xcc,0x04,0x0b,0x3e,0x7a]117 118v_dot4_u32_u8 v3, v4, v5, v6119// GFX12: v_dot4_u32_u8 v3, v4, v5, v6 ; encoding: [0x03,0x40,0x17,0xcc,0x04,0x0b,0x1a,0x1c]120 121v_dot4_i32_iu8 v3, v4, v5, 0xf122// GFX12: v_dot4_i32_iu8 v3, v4, v5, 15 ; encoding: [0x03,0x40,0x16,0xcc,0x04,0x0b,0x3e,0x1a]123 124v_dot8_i32_iu4 v3, v4, v5, 0xf neg_lo:[1,0]125// GFX12: v_dot8_i32_iu4 v3, v4, v5, 15 neg_lo:[1,0,0] ; encoding: [0x03,0x40,0x18,0xcc,0x04,0x0b,0x3e,0x3a]126 127v_dot8_i32_iu4 v3, v4, v5, v0 neg_lo:[0,0]128// GFX12: v_dot8_i32_iu4 v3, v4, v5, v0 ; encoding: [0x03,0x40,0x18,0xcc,0x04,0x0b,0x02,0x1c]129 130v_dot8_u32_u4 v0, v1, v2, v3131// GFX12: v_dot8_u32_u4 v0, v1, v2, v3 ; encoding: [0x00,0x40,0x19,0xcc,0x01,0x05,0x0e,0x1c]132 133v_dot2_f32_f16 v0, v1, v2, v3134// GFX12: v_dot2_f32_f16 v0, v1, v2, v3 ; encoding: [0x00,0x40,0x13,0xcc,0x01,0x05,0x0e,0x1c]135 136v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[1,1,0] neg_hi:[1,0,1]137// GFX12: v_dot2_f32_f16 v0, v1, v2, v3 neg_lo:[1,1,0] neg_hi:[1,0,1] ; encoding: [0x00,0x45,0x13,0xcc,0x01,0x05,0x0e,0x7c]138 139v_dot2_f32_bf16 v0, v1, v2, v3140// GFX12: v_dot2_f32_bf16 v0, v1, v2, v3 ; encoding: [0x00,0x40,0x1a,0xcc,0x01,0x05,0x0e,0x1c]141 142v_dot2_f32_bf16 v0, v1, v2, v3 neg_lo:[1,1,0] neg_hi:[1,0,1]143// GFX12: v_dot2_f32_bf16 v0, v1, v2, v3 neg_lo:[1,1,0] neg_hi:[1,0,1] ; encoding: [0x00,0x45,0x1a,0xcc,0x01,0x05,0x0e,0x7c]144