Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 13 for RLWINM (0.19 sec)

  1. test/codegen/shift.go

    	// ppc64x:-".*RLWINM",-".*RLDICR",".*CLRLSLDI"
    	f := tab[byte(v)^b]
    	// ppc64x:-".*RLWINM",-".*RLDICR",".*CLRLSLDI"
    	f += tab[byte(v)&b]
    	// ppc64x:-".*RLWINM",-".*RLDICR",".*CLRLSLDI"
    	f += tab[byte(v)|b]
    	// ppc64x:-".*RLWINM",-".*RLDICR",".*CLRLSLDI"
    	f += tab[uint16(v)&h]
    	// ppc64x:-".*RLWINM",-".*RLDICR",".*CLRLSLDI"
    	f += tab[uint16(v)^h]
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue May 21 18:53:43 UTC 2024
    - 12.7K bytes
    - Viewed (0)
  2. src/cmd/compile/internal/ssa/_gen/PPC64latelower.rules

    (RLDICL [em] x:(SRDconst [s] a)) && (em&0xFF0000) == 0 => (RLDICL [mergePPC64RLDICLandSRDconst(em, s)] a)
    
    // Convert rotated 32 bit masks on 32 bit values into rlwinm. In general, this leaves the upper 32 bits in an undefined state.
    (AND <t> x:(MOVDconst [m]) n) && t.Size() == 4 && isPPC64WordRotateMask(m) => (RLWINM [encodePPC64RotateMask(0,m,32)] n)
    
    // When PCRel is supported, paddi can add a 34b signed constant in one instruction.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 22 19:59:38 UTC 2024
    - 3.8K bytes
    - Viewed (0)
  3. src/cmd/compile/internal/ssa/_gen/PPC64.rules

    (MOVBZreg (SRWconst x [s])) && mergePPC64AndSrwi(0xFF,s) != 0 => (RLWINM [mergePPC64AndSrwi(0xFF,s)] x)
    (MOVBZreg (RLWINM [r] y)) && mergePPC64AndRlwinm(0xFF,r) != 0 => (RLWINM [mergePPC64AndRlwinm(0xFF,r)] y)
    (MOVHZreg (RLWINM [r] y)) && mergePPC64AndRlwinm(0xFFFF,r) != 0 => (RLWINM [mergePPC64AndRlwinm(0xFFFF,r)] y)
    (MOVWZreg (RLWINM [r] y)) && mergePPC64MovwzregRlwinm(r) != 0 => (RLWINM [mergePPC64MovwzregRlwinm(r)] y)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 19:02:52 UTC 2024
    - 53.2K bytes
    - Viewed (0)
  4. src/cmd/compile/internal/ssa/rewrite_test.go

    			t.Errorf("mergePPC64ClrlsldiSrw(Test %d) got (%d,0x%x) expected (%d,0x%x)", i, r, m, v.rotate, v.mask)
    		}
    	}
    }
    
    func TestMergePPC64ClrlsldiRlwinm(t *testing.T) {
    	tests := []struct {
    		clrlsldi int32
    		rlwinm   int64
    		valid    bool
    		rotate   int64
    		mask     uint64
    	}{
    		// ((x<<4)&0xFF00)<<4
    		{newPPC64ShiftAuxInt(4, 56, 63, 64), encodePPC64RotateMask(4, 0xFF00, 32), false, 0, 0},
    		// ((x>>4)&0xFF)<<4
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 15 21:57:02 UTC 2021
    - 6.9K bytes
    - Viewed (0)
  5. src/cmd/compile/internal/ssa/rewrite.go

    // Combine (ANDconst [m] (SRWconst [s])) into (RLWINM [y]) or return 0
    func mergePPC64AndSrwi(m, s int64) int64 {
    	mask := mergePPC64RShiftMask(m, s, 32)
    	if !isPPC64WordRotateMask(mask) {
    		return 0
    	}
    	return encodePPC64RotateMask((32-s)&31, mask, 32)
    }
    
    // Test if a word shift right feeding into a CLRLSLDI can be merged into RLWINM.
    // Return the encoded RLWINM constant, or 0 if they cannot be merged.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 19:02:52 UTC 2024
    - 64.2K bytes
    - Viewed (0)
  6. src/cmd/internal/obj/ppc64/doc.go

    Examples:
    
    	SRAD $8,R3,R4		=>	sradi r4,r3,8
    	SRD $8,R3,R4		=>	rldicl r4,r3,56,8
    	SLD $8,R3,R4		=>	rldicr r4,r3,8,55
    	SRAW $16,R4,R5		=>	srawi r5,r4,16
    	SRW $40,R4,R5		=>	rlwinm r5,r4,0,0,31
    	SLW $12,R4,R5		=>	rlwinm r5,r4,12,0,19
    
    Some non-simple shifts have operands in the Go assembly which don't map directly
    onto operands in the PPC64 assembly. When an operand in a shift instruction in the
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Apr 21 16:47:45 UTC 2023
    - 11.3K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/rewritePPC64.go

    		}
    		x := v_0.Args[0]
    		v.reset(OpPPC64ANDconst)
    		v.AuxInt = int64ToAuxInt(c & 0xFFFFFFFF)
    		v.AddArg(x)
    		return true
    	}
    	// match: (ANDconst [m] (RLWINM [r] y))
    	// cond: mergePPC64AndRlwinm(uint32(m),r) != 0
    	// result: (RLWINM [mergePPC64AndRlwinm(uint32(m),r)] y)
    	for {
    		m := auxIntToInt64(v.AuxInt)
    		if v_0.Op != OpPPC64RLWINM {
    			break
    		}
    		r := auxIntToInt64(v_0.AuxInt)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Jun 07 19:02:52 UTC 2024
    - 360.2K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/_gen/PPC64Ops.go

    		{name: "EXTSWSLconst", argLength: 1, reg: gp11, asm: "EXTSWSLI", aux: "Int64"},
    
    		{name: "RLWINM", argLength: 1, reg: gp11, asm: "RLWNM", aux: "Int64"},                           // Rotate and mask by immediate "rlwinm". encodePPC64RotateMask describes aux
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 22 19:59:38 UTC 2024
    - 43.8K bytes
    - Viewed (0)
  9. src/cmd/compile/internal/ssa/rewritePPC64latelower.go

    			v.AddArg(n)
    			return true
    		}
    		break
    	}
    	// match: (AND <t> x:(MOVDconst [m]) n)
    	// cond: t.Size() == 4 && isPPC64WordRotateMask(m)
    	// result: (RLWINM [encodePPC64RotateMask(0,m,32)] n)
    	for {
    		t := v.Type
    		for _i0 := 0; _i0 <= 1; _i0, v_0, v_1 = _i0+1, v_1, v_0 {
    			x := v_0
    			if x.Op != OpPPC64MOVDconst {
    				continue
    			}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 22 19:59:38 UTC 2024
    - 16.5K bytes
    - Viewed (0)
  10. src/cmd/internal/obj/ppc64/asm9.go

    		// clrlslwi ra,rs,b,n -> rlwinm ra,rs,n,b-n,31-n
    		// It maps onto rlwinm which is directly generated here.
    		if n > v || v >= 32 {
    			c.ctxt.Diag("Invalid n or b for CLRLSLWI: %x %x\n%v", v, n, p)
    		}
    
    		o1 = OP_RLW(OP_RLWINM, uint32(p.To.Reg), uint32(p.Reg), uint32(n), uint32(v-n), uint32(31-n))
    
    	case 63: /* rlwimi/rlwnm/rlwinm [$sh,b],s,[$mask or mb,me],a*/
    		var mb, me uint32
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 15 13:55:28 UTC 2024
    - 156.1K bytes
    - Viewed (0)
Back to top