From 62a0af4a0d91d2ae4df869f6093161059c5f6852 Mon Sep 17 00:00:00 2001 From: Aaron Watry Date: Thu, 11 Sep 2014 15:02:41 +0000 Subject: [PATCH] R600: Add LDS_MAX_[U]INT[_RET] instructions for Evergreen This was only present for SI before. Cayman may still be missing, but I am unable to test that currently. v2: Don't create atomicrmw max tests in separate file Signed-off-by: Aaron Watry Reviewed-by: Matt Arsenault CC: Tom Stellard llvm-svn: 217589 --- llvm/lib/Target/R600/EvergreenInstructions.td | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/llvm/lib/Target/R600/EvergreenInstructions.td b/llvm/lib/Target/R600/EvergreenInstructions.td index ea3f550dcb90..338b6b36e5ca 100644 --- a/llvm/lib/Target/R600/EvergreenInstructions.td +++ b/llvm/lib/Target/R600/EvergreenInstructions.td @@ -489,6 +489,8 @@ class R600_LDS_1A2D lds_op, string name, list pattern> : def LDS_ADD : R600_LDS_1A1D_NORET <0x0, "LDS_ADD", [] >; def LDS_SUB : R600_LDS_1A1D_NORET <0x1, "LDS_SUB", [] >; +def LDS_MAX_INT : R600_LDS_1A1D_NORET <0x6, "LDS_MAX_INT", [] >; +def LDS_MAX_UINT : R600_LDS_1A1D_NORET <0x8, "LDS_MAX_UINT", [] >; def LDS_WRITE : R600_LDS_1A1D_NORET <0xD, "LDS_WRITE", [(local_store (i32 R600_Reg32:$src1), R600_Reg32:$src0)] >; @@ -504,6 +506,12 @@ def LDS_ADD_RET : R600_LDS_1A1D_RET <0x20, "LDS_ADD", def LDS_SUB_RET : R600_LDS_1A1D_RET <0x21, "LDS_SUB", [(set i32:$dst, (atomic_load_sub_local i32:$src0, i32:$src1))] >; +def LDS_MAX_INT_RET : R600_LDS_1A1D_RET <0x26, "LDS_MAX_INT", + [(set i32:$dst, (atomic_load_max_local i32:$src0, i32:$src1))] +>; +def LDS_MAX_UINT_RET : R600_LDS_1A1D_RET <0x28, "LDS_MAX_UINT", + [(set i32:$dst, (atomic_load_umax_local i32:$src0, i32:$src1))] +>; def LDS_READ_RET : R600_LDS_1A <0x32, "LDS_READ_RET", [(set (i32 R600_Reg32:$dst), (local_load R600_Reg32:$src0))] >; -- GitLab