1// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s 2// RUN: llvm-mc -arch=amdgcn -show-encoding %s | FileCheck %s 3 4//===----------------------------------------------------------------------===// 5// VOPC Instructions 6//===----------------------------------------------------------------------===// 7 8// 9// Modifier tests: 10// 11 12v_cmp_lt_f32 s[2:3] -v4, v6 13// CHECK: v_cmp_lt_f32_e64 s[2:3], -v4, v6 ; encoding: [0x02,0x00,0x02,0xd0,0x04,0x0d,0x02,0x20] 14 15v_cmp_lt_f32 s[2:3] v4, -v6 16// CHECK: v_cmp_lt_f32_e64 s[2:3], v4, -v6 ; encoding: [0x02,0x00,0x02,0xd0,0x04,0x0d,0x02,0x40] 17 18v_cmp_lt_f32 s[2:3] -v4, -v6 19// CHECK: v_cmp_lt_f32_e64 s[2:3], -v4, -v6 ; encoding: [0x02,0x00,0x02,0xd0,0x04,0x0d,0x02,0x60] 20 21v_cmp_lt_f32 s[2:3] |v4|, v6 22// CHECK: v_cmp_lt_f32_e64 s[2:3], |v4|, v6 ; encoding: [0x02,0x01,0x02,0xd0,0x04,0x0d,0x02,0x00] 23 24v_cmp_lt_f32 s[2:3] v4, |v6| 25// CHECK: v_cmp_lt_f32_e64 s[2:3], v4, |v6| ; encoding: [0x02,0x02,0x02,0xd0,0x04,0x0d,0x02,0x00] 26 27v_cmp_lt_f32 s[2:3] |v4|, |v6| 28// CHECK: v_cmp_lt_f32_e64 s[2:3], |v4|, |v6| ; encoding: [0x02,0x03,0x02,0xd0,0x04,0x0d,0x02,0x00] 29 30v_cmp_lt_f32 s[2:3] -|v4|, v6 31// CHECK: v_cmp_lt_f32_e64 s[2:3], -|v4|, v6 ; encoding: [0x02,0x01,0x02,0xd0,0x04,0x0d,0x02,0x20] 32 33v_cmp_lt_f32 s[2:3] v4, -|v6| 34// CHECK: v_cmp_lt_f32_e64 s[2:3], v4, -|v6| ; encoding: [0x02,0x02,0x02,0xd0,0x04,0x0d,0x02,0x40] 35 36v_cmp_lt_f32 s[2:3] -|v4|, -|v6| 37// CHECK: v_cmp_lt_f32_e64 s[2:3], -|v4|, -|v6| ; encoding: [0x02,0x03,0x02,0xd0,0x04,0x0d,0x02,0x60] 38 39// 40// Instruction tests: 41// 42 43v_cmp_f_f32 s[2:3], v4, v6 44// CHECK: v_cmp_f_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x00,0xd0,0x04,0x0d,0x02,0x00] 45 46v_cmp_lt_f32 s[2:3], v4, v6 47// CHECK: v_cmp_lt_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x02,0xd0,0x04,0x0d,0x02,0x00] 48 49v_cmp_eq_f32 s[2:3], v4, v6 50// CHECK: v_cmp_eq_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x04,0xd0,0x04,0x0d,0x02,0x00] 51 52v_cmp_le_f32 s[2:3], v4, v6 53// CHECK: v_cmp_le_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x06,0xd0,0x04,0x0d,0x02,0x00] 54 55v_cmp_gt_f32 s[2:3], v4, v6 56// CHECK: v_cmp_gt_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x08,0xd0,0x04,0x0d,0x02,0x00] 57 58v_cmp_lg_f32 s[2:3], v4, v6 59// CHECK: v_cmp_lg_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x0a,0xd0,0x04,0x0d,0x02,0x00] 60 61v_cmp_ge_f32 s[2:3], v4, v6 62// CHECK: v_cmp_ge_f32_e64 s[2:3], v4, v6 ; encoding: [0x02,0x00,0x0c,0xd0,0x04,0x0d,0x02,0x00] 63 64// TODO: Finish VOPC 65 66//===----------------------------------------------------------------------===// 67// VOP1 Instructions 68//===----------------------------------------------------------------------===// 69 70// 71// Modifier tests: 72// 73 74v_fract_f32 v1, -v2 75// CHECK: v_fract_f32_e64 v1, -v2 ; encoding: [0x01,0x00,0x40,0xd3,0x02,0x01,0x00,0x20] 76 77v_fract_f32 v1, |v2| 78// CHECK: v_fract_f32_e64 v1, |v2| ; encoding: [0x01,0x01,0x40,0xd3,0x02,0x01,0x00,0x00] 79 80v_fract_f32 v1, -|v2| 81// CHECK: v_fract_f32_e64 v1, -|v2| ; encoding: [0x01,0x01,0x40,0xd3,0x02,0x01,0x00,0x20] 82 83v_fract_f32 v1, v2 clamp 84// CHECK: v_fract_f32_e64 v1, v2 clamp ; encoding: [0x01,0x08,0x40,0xd3,0x02,0x01,0x00,0x00] 85 86v_fract_f32 v1, v2 mul:2 87// CHECK: v_fract_f32_e64 v1, v2 mul:2 ; encoding: [0x01,0x00,0x40,0xd3,0x02,0x01,0x00,0x08] 88 89v_fract_f32 v1, v2, div:2 clamp 90// CHECK: v_fract_f32_e64 v1, v2 clamp div:2 ; encoding: [0x01,0x08,0x40,0xd3,0x02,0x01,0x00,0x18] 91 92// TODO: Finish VOP1 93 94///===---------------------------------------------------------------------===// 95// VOP2 Instructions 96///===---------------------------------------------------------------------===// 97 98// TODO: Modifier tests 99 100v_cndmask_b32 v1, v3, v5, s[4:5] 101// CHECK: v_cndmask_b32_e64 v1, v3, v5, s[4:5] ; encoding: [0x01,0x00,0x00,0xd2,0x03,0x0b,0x12,0x00] 102 103//TODO: readlane, writelane 104 105v_add_f32 v1, v3, s5 106// CHECK: v_add_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x06,0xd2,0x03,0x0b,0x00,0x00] 107 108v_sub_f32 v1, v3, s5 109// CHECK: v_sub_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x08,0xd2,0x03,0x0b,0x00,0x00] 110 111v_subrev_f32 v1, v3, s5 112// CHECK: v_subrev_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x0a,0xd2,0x03,0x0b,0x00,0x00] 113 114v_mac_legacy_f32 v1, v3, s5 115// CHECK: v_mac_legacy_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x0c,0xd2,0x03,0x0b,0x00,0x00] 116 117v_mul_legacy_f32 v1, v3, s5 118// CHECK: v_mul_legacy_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x0e,0xd2,0x03,0x0b,0x00,0x00] 119 120v_mul_f32 v1, v3, s5 121// CHECK: v_mul_f32_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x10,0xd2,0x03,0x0b,0x00,0x00] 122 123v_mul_i32_i24 v1, v3, s5 124// CHECK: v_mul_i32_i24_e64 v1, v3, s5 ; encoding: [0x01,0x00,0x12,0xd2,0x03,0x0b,0x00,0x00] 125 126///===---------------------------------------------------------------------===// 127// VOP3 Instructions 128///===---------------------------------------------------------------------===// 129 130// TODO: Modifier tests 131 132v_mad_legacy_f32 v2, v4, v6, v8 133// CHECK: v_mad_legacy_f32 v2, v4, v6, v8 ; encoding: [0x02,0x00,0x80,0xd2,0x04,0x0d,0x22,0x04] 134 135 136 137 138 139