mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	shader/memory: Implement RED.E.ADD
Implements a reduction operation. It's an atomic operation that doesn't return a value. This commit introduces another primitive because some shading languages might have a primitive for reduction operations.
This commit is contained in:
		@@ -988,6 +988,12 @@ union Instruction {
 | 
			
		||||
        BitField<46, 2, u64> cache_mode;
 | 
			
		||||
    } stg;
 | 
			
		||||
 | 
			
		||||
    union {
 | 
			
		||||
        BitField<23, 3, AtomicOp> operation;
 | 
			
		||||
        BitField<48, 1, u64> extended;
 | 
			
		||||
        BitField<20, 3, GlobalAtomicType> type;
 | 
			
		||||
    } red;
 | 
			
		||||
 | 
			
		||||
    union {
 | 
			
		||||
        BitField<52, 4, AtomicOp> operation;
 | 
			
		||||
        BitField<49, 3, GlobalAtomicType> type;
 | 
			
		||||
@@ -1733,6 +1739,7 @@ public:
 | 
			
		||||
        ST_S,
 | 
			
		||||
        ST,    // Store in generic memory
 | 
			
		||||
        STG,   // Store in global memory
 | 
			
		||||
        RED,   // Reduction operation
 | 
			
		||||
        ATOM,  // Atomic operation on global memory
 | 
			
		||||
        ATOMS, // Atomic operation on shared memory
 | 
			
		||||
        AL2P,  // Transforms attribute memory into physical memory
 | 
			
		||||
@@ -2039,6 +2046,7 @@ private:
 | 
			
		||||
            INST("1110111101010---", Id::ST_L, Type::Memory, "ST_L"),
 | 
			
		||||
            INST("101-------------", Id::ST, Type::Memory, "ST"),
 | 
			
		||||
            INST("1110111011011---", Id::STG, Type::Memory, "STG"),
 | 
			
		||||
            INST("1110101111111---", Id::RED, Type::Memory, "RED"),
 | 
			
		||||
            INST("11101101--------", Id::ATOM, Type::Memory, "ATOM"),
 | 
			
		||||
            INST("11101100--------", Id::ATOMS, Type::Memory, "ATOMS"),
 | 
			
		||||
            INST("1110111110100---", Id::AL2P, Type::Memory, "AL2P"),
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user