diff options
author | Justin Holewinski <justin.holewinski@gmail.com> | 2011-04-28 00:19:55 +0000 |
---|---|---|
committer | Justin Holewinski <justin.holewinski@gmail.com> | 2011-04-28 00:19:55 +0000 |
commit | 9c865333476b6b3390df55a9192599cb20f2971d (patch) | |
tree | cf52862eb28abf05f6e60eb86c0291e33f4a252b /lib | |
parent | ef342fc7510034d44e76e5a1fa923c7c9182d070 (diff) | |
download | external_llvm-9c865333476b6b3390df55a9192599cb20f2971d.zip external_llvm-9c865333476b6b3390df55a9192599cb20f2971d.tar.gz external_llvm-9c865333476b6b3390df55a9192599cb20f2971d.tar.bz2 |
PTX: support for select
- selection of SELP instruction
- new selp.ll test
Patch by Dan Bailey
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130357 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Target/PTX/PTXInstrInfo.td | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/lib/Target/PTX/PTXInstrInfo.td b/lib/Target/PTX/PTXInstrInfo.td index 9863abe..1ac9d3f 100644 --- a/lib/Target/PTX/PTXInstrInfo.td +++ b/lib/Target/PTX/PTXInstrInfo.td @@ -483,6 +483,13 @@ multiclass PTX_SETP_FP<RegisterClass RC, string regclsname, [(set Preds:$p, (xor (setcc RC:$a, RC:$b, ocmp), (not Preds:$c)))]>; } +multiclass PTX_SELP<RegisterClass RC, string regclsname> { + def rr + : InstPTX<(outs RC:$r), (ins Preds:$a, RC:$b, RC:$c), + !strconcat("selp.", regclsname, "\t$r, $b, $c, $a"), + [(set RC:$r, (select Preds:$a, RC:$b, RC:$c))]>; +} + multiclass PTX_LD<string opstr, string typestr, RegisterClass RC, PatFrag pat_load> { def rr32 : InstPTX<(outs RC:$d), (ins MEMri32:$a), @@ -703,6 +710,14 @@ defm SETPLEf64 : PTX_SETP_FP<RRegf64, "f64", SETULE, SETOLE, "le">; defm SETPGTf64 : PTX_SETP_FP<RRegf64, "f64", SETUGT, SETOGT, "gt">; defm SETPGEf64 : PTX_SETP_FP<RRegf64, "f64", SETUGE, SETOGE, "ge">; +// .selp + +defm PTX_SELPu16 : PTX_SELP<RRegu16, "u16">; +defm PTX_SELPu32 : PTX_SELP<RRegu32, "u32">; +defm PTX_SELPu64 : PTX_SELP<RRegu64, "u64">; +defm PTX_SELPf32 : PTX_SELP<RRegf32, "f32">; +defm PTX_SELPf64 : PTX_SELP<RRegf64, "f64">; + ///===- Logic and Shift Instructions --------------------------------------===// defm SHL : INT3ntnc<"shl.b", PTXshl>; |