// RUN: llvm-mc -arch=amdgcn -mcpu=gfx90a -show-encoding %s | FileCheck %s --check-prefix=GFX90A
// RUN: not llvm-mc -arch=amdgcn -mcpu=gfx900 %s 2>&1 | FileCheck %s --check-prefix=GFX900 --implicit-check-not=error:

// GFX90A: v_ceil_f64_dpp v[0:1], v[2:3]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x30,0x00,0x7e,0x02,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_ceil_f64 v[0:1], v[2:3] row_newbcast:1

// GFX90A: v_fmac_f64_dpp v[0:1], v[2:3], v[4:5]  row_newbcast:2 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x08,0x00,0x08,0x02,0x52,0x01,0xff]
// GFX900: error: instruction not supported on this GPU
v_fmac_f64 v[0:1], v[2:3], v[4:5] row_newbcast:2

// GFX90A: v_cvt_f32_f64_dpp v5, v[0:1]  row_newbcast:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x1e,0x0a,0x7e,0x00,0x5f,0x01,0xff]
// GFX900: error: not a valid operand.
v_cvt_f32_f64 v5, v[0:1] row_newbcast:15

// GFX90A: v_cvt_i32_f64_dpp v5, v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x06,0x0a,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_cvt_i32_f64 v5, v[0:1] row_newbcast:1

// GFX90A: v_cvt_u32_f64_dpp v5, v[0:1]  row_newbcast:2 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x2a,0x0a,0x7e,0x00,0x52,0x01,0xff]
// GFX900: error: not a valid operand.
v_cvt_u32_f64 v5, v[0:1] row_newbcast:2

// GFX90A: v_floor_f64_dpp v[4:5], v[0:1]  row_newbcast:15 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x34,0x08,0x7e,0x00,0x5f,0x01,0xff]
// GFX900: error: not a valid operand.
v_floor_f64 v[4:5], v[0:1] row_newbcast:15

// GFX90A: v_fract_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x64,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_fract_f64 v[4:5], v[0:1] row_newbcast:1

// GFX90A: v_frexp_exp_i32_f64_dpp v5, v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x60,0x0a,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_frexp_exp_i32_f64 v5, v[0:1] row_newbcast:1

// GFX90A: v_frexp_mant_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x62,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_frexp_mant_f64 v[4:5], v[0:1] row_newbcast:1

// GFX90A: v_rcp_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x4a,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_rcp_f64 v[4:5], v[0:1] row_newbcast:1

// GFX90A: v_rndne_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x32,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_rndne_f64 v[4:5], v[0:1] row_newbcast:1

// GFX90A: v_rsq_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x4c,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_rsq_f64 v[4:5], v[0:1] row_newbcast:1

// GFX90A: v_sqrt_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x50,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_sqrt_f64 v[4:5], v[0:1] row_newbcast:1

// GFX90A: v_trunc_f64_dpp v[4:5], v[0:1]  row_newbcast:1 row_mask:0xf bank_mask:0xf ; encoding: [0xfa,0x2e,0x08,0x7e,0x00,0x51,0x01,0xff]
// GFX900: error: not a valid operand.
v_trunc_f64 v[4:5], v[0:1] row_newbcast:1
