From fc0347ac9c46b4fd17c984256f78ded7519ef00f Mon Sep 17 00:00:00 2001 From: Tom Stellard Date: Wed, 18 Feb 2015 16:08:11 +0000 Subject: [PATCH] R600/SI: Add missing SOP1 instructions git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229685 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/Target/R600/SIInstrInfo.td | 15 +++++++++++++++ lib/Target/R600/SIInstructions.td | 24 ++++++++++++------------ 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/lib/Target/R600/SIInstrInfo.td b/lib/Target/R600/SIInstrInfo.td index f5df1acb327..6e0db3ca5c9 100644 --- a/lib/Target/R600/SIInstrInfo.td +++ b/lib/Target/R600/SIInstrInfo.td @@ -428,6 +428,21 @@ multiclass SOP1_64_0 pattern> { } } +// 64-bit input, no output +multiclass SOP1_1 pattern> { + def "" : SOP1_Pseudo ; + + def _si : SOP1_Real_si { + let sdst = 0; + } + + def _vi : SOP1_Real_vi { + let sdst = 0; + } +} + // 64-bit input, 32-bit output. multiclass SOP1_32_64 pattern> : SOP1_m < op, opName, (outs SReg_32:$dst), (ins SSrc_64:$src0), diff --git a/lib/Target/R600/SIInstructions.td b/lib/Target/R600/SIInstructions.td index 77a7b54b1c1..8e1c0e70aff 100644 --- a/lib/Target/R600/SIInstructions.td +++ b/lib/Target/R600/SIInstructions.td @@ -133,28 +133,28 @@ defm S_BREV_B32 : SOP1_32 , "s_brev_b32", defm S_BREV_B64 : SOP1_64 , "s_brev_b64", []>; let Defs = [SCC] in { - //defm S_BCNT0_I32_B32 : SOP1_BCNT0 , "s_bcnt0_i32_b32", []>; - //defm S_BCNT0_I32_B64 : SOP1_BCNT0 , "s_bcnt0_i32_b64", []>; + defm S_BCNT0_I32_B32 : SOP1_32 , "s_bcnt0_i32_b32", []>; + defm S_BCNT0_I32_B64 : SOP1_32_64 , "s_bcnt0_i32_b64", []>; defm S_BCNT1_I32_B32 : SOP1_32 , "s_bcnt1_i32_b32", [(set i32:$dst, (ctpop i32:$src0))] >; defm S_BCNT1_I32_B64 : SOP1_32_64 , "s_bcnt1_i32_b64", []>; } // End Defs = [SCC] -//defm S_FF0_I32_B32 : SOP1_32 , "s_ff0_i32_b32", []>; -//defm S_FF0_I32_B64 : SOP1_FF0 , "s_ff0_i32_b64", []>; +defm S_FF0_I32_B32 : SOP1_32 , "s_ff0_i32_b32", []>; +defm S_FF0_I32_B64 : SOP1_32_64 , "s_ff0_i32_b64", []>; defm S_FF1_I32_B32 : SOP1_32 , "s_ff1_i32_b32", [(set i32:$dst, (cttz_zero_undef i32:$src0))] >; -////defm S_FF1_I32_B64 : SOP1_FF1 , "s_ff1_i32_b64", []>; +defm S_FF1_I32_B64 : SOP1_32_64 , "s_ff1_i32_b64", []>; defm S_FLBIT_I32_B32 : SOP1_32 , "s_flbit_i32_b32", [(set i32:$dst, (ctlz_zero_undef i32:$src0))] >; -//defm S_FLBIT_I32_B64 : SOP1_32 , "s_flbit_i32_b64", []>; +defm S_FLBIT_I32_B64 : SOP1_32_64 , "s_flbit_i32_b64", []>; defm S_FLBIT_I32 : SOP1_32 , "s_flbit_i32", []>; -//defm S_FLBIT_I32_I64 : SOP1_32 , "s_flbit_i32_i64", []>; +defm S_FLBIT_I32_I64 : SOP1_32_64 , "s_flbit_i32_i64", []>; defm S_SEXT_I32_I8 : SOP1_32 , "s_sext_i32_i8", [(set i32:$dst, (sext_inreg i32:$src0, i8))] >; @@ -162,10 +162,10 @@ defm S_SEXT_I32_I16 : SOP1_32 , "s_sext_i32_i16", [(set i32:$dst, (sext_inreg i32:$src0, i16))] >; -////defm S_BITSET0_B32 : SOP1_BITSET0 , "s_bitset0_b32", []>; -////defm S_BITSET0_B64 : SOP1_BITSET0 , "s_bitset0_b64", []>; -////defm S_BITSET1_B32 : SOP1_BITSET1 , "s_bitset1_b32", []>; -////defm S_BITSET1_B64 : SOP1_BITSET1 , "s_bitset1_b64", []>; +defm S_BITSET0_B32 : SOP1_32 , "s_bitset0_b32", []>; +defm S_BITSET0_B64 : SOP1_64 , "s_bitset0_b64", []>; +defm S_BITSET1_B32 : SOP1_32 , "s_bitset1_b32", []>; +defm S_BITSET1_B64 : SOP1_64 , "s_bitset1_b64", []>; defm S_GETPC_B64 : SOP1_64_0 , "s_getpc_b64", []>; defm S_SETPC_B64 : SOP1_64 , "s_setpc_b64", []>; defm S_SWAPPC_B64 : SOP1_64 , "s_swappc_b64", []>; @@ -190,7 +190,7 @@ defm S_MOVRELS_B32 : SOP1_32 , "s_movrels_b32", []>; defm S_MOVRELS_B64 : SOP1_64 , "s_movrels_b64", []>; defm S_MOVRELD_B32 : SOP1_32 , "s_movreld_b32", []>; defm S_MOVRELD_B64 : SOP1_64 , "s_movreld_b64", []>; -//defm S_CBRANCH_JOIN : SOP1_ , "s_cbranch_join", []>; +defm S_CBRANCH_JOIN : SOP1_1 , "s_cbranch_join", []>; defm S_MOV_REGRD_B32 : SOP1_32 , "s_mov_regrd_b32", []>; let Defs = [SCC] in { defm S_ABS_I32 : SOP1_32 , "s_abs_i32", []>; -- 2.34.1