diff options
author | Austin Clements <austin@google.com> | 2019-10-23 10:20:49 -0400 |
---|---|---|
committer | Austin Clements <austin@google.com> | 2019-10-29 03:18:55 +0000 |
commit | 97592b3c14e96eece91ddc91a188e08fd2ed2dfa (patch) | |
tree | 0b02a072954e9b17a0869e7b291613c0e4ad06c2 /src/cmd/compile/internal/ssa/opGen.go | |
parent | d2101e54908dc6899863be0772658dbd7e0bbc71 (diff) | |
download | go-97592b3c14e96eece91ddc91a188e08fd2ed2dfa.tar.gz go-97592b3c14e96eece91ddc91a188e08fd2ed2dfa.zip |
cmd/compile: intrinsics for runtime/internal/atomic.Store8
For #10958, #24543, but makes sense on its own.
Change-Id: I2a87dab66b82a1863e4b6512b1f8def51463ce2a
Reviewed-on: https://go-review.googlesource.com/c/go/+/203284
Run-TryBot: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Cherry Zhang <cherryyz@google.com>
Diffstat (limited to 'src/cmd/compile/internal/ssa/opGen.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/opGen.go | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 1bac391914..5077e80a15 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -877,6 +877,7 @@ const ( OpAMD64MOVBatomicload OpAMD64MOVLatomicload OpAMD64MOVQatomicload + OpAMD64XCHGB OpAMD64XCHGL OpAMD64XCHGQ OpAMD64XADDLlock @@ -1434,6 +1435,7 @@ const ( OpARM64LDAR OpARM64LDARB OpARM64LDARW + OpARM64STLRB OpARM64STLR OpARM64STLRW OpARM64LoweredAtomicExchange64 @@ -1655,6 +1657,7 @@ const ( OpMIPS64LoweredAtomicLoad8 OpMIPS64LoweredAtomicLoad32 OpMIPS64LoweredAtomicLoad64 + OpMIPS64LoweredAtomicStore8 OpMIPS64LoweredAtomicStore32 OpMIPS64LoweredAtomicStore64 OpMIPS64LoweredAtomicStorezero32 @@ -1848,6 +1851,7 @@ const ( OpPPC64CALLinter OpPPC64LoweredZero OpPPC64LoweredMove + OpPPC64LoweredAtomicStore8 OpPPC64LoweredAtomicStore32 OpPPC64LoweredAtomicStore64 OpPPC64LoweredAtomicLoad8 @@ -2068,6 +2072,7 @@ const ( OpS390XMOVBZatomicload OpS390XMOVWZatomicload OpS390XMOVDatomicload + OpS390XMOVBatomicstore OpS390XMOVWatomicstore OpS390XMOVDatomicstore OpS390XLAA @@ -2553,6 +2558,7 @@ const ( OpAtomicLoad64 OpAtomicLoadPtr OpAtomicLoadAcq32 + OpAtomicStore8 OpAtomicStore32 OpAtomicStore64 OpAtomicStorePtrNoWB @@ -11407,6 +11413,25 @@ var opcodeTable = [...]opInfo{ }, }, { + name: "XCHGB", + auxType: auxSymOff, + argLen: 3, + resultInArg0: true, + faultOnNilArg1: true, + hasSideEffects: true, + symEffect: SymRdWr, + asm: x86.AXCHGB, + reg: regInfo{ + inputs: []inputInfo{ + {0, 65519}, // AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 + {1, 4295032831}, // AX CX DX BX SP BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 SB + }, + outputs: []outputInfo{ + {0, 65519}, // AX CX DX BX BP SI DI R8 R9 R10 R11 R12 R13 R14 R15 + }, + }, + }, + { name: "XCHGL", auxType: auxSymOff, argLen: 3, @@ -18877,6 +18902,19 @@ var opcodeTable = [...]opInfo{ }, }, { + name: "STLRB", + argLen: 3, + faultOnNilArg0: true, + hasSideEffects: true, + asm: arm64.ASTLRB, + reg: regInfo{ + inputs: []inputInfo{ + {1, 805044223}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 + {0, 9223372038733561855}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R19 R20 R21 R22 R23 R24 R25 R26 g R30 SP SB + }, + }, + }, + { name: "STLR", argLen: 3, faultOnNilArg0: true, @@ -21883,6 +21921,18 @@ var opcodeTable = [...]opInfo{ }, }, { + name: "LoweredAtomicStore8", + argLen: 3, + faultOnNilArg0: true, + hasSideEffects: true, + reg: regInfo{ + inputs: []inputInfo{ + {1, 234881022}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 g R31 + {0, 4611686018695823358}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 SP g R31 SB + }, + }, + }, + { name: "LoweredAtomicStore32", argLen: 3, faultOnNilArg0: true, @@ -24490,6 +24540,19 @@ var opcodeTable = [...]opInfo{ }, }, { + name: "LoweredAtomicStore8", + auxType: auxInt64, + argLen: 3, + faultOnNilArg0: true, + hasSideEffects: true, + reg: regInfo{ + inputs: []inputInfo{ + {0, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 + {1, 1073733630}, // SP SB R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R14 R15 R16 R17 R18 R19 R20 R21 R22 R23 R24 R25 R26 R27 R28 R29 + }, + }, + }, + { name: "LoweredAtomicStore32", auxType: auxInt64, argLen: 3, @@ -27633,6 +27696,22 @@ var opcodeTable = [...]opInfo{ }, }, { + name: "MOVBatomicstore", + auxType: auxSymOff, + argLen: 3, + clobberFlags: true, + faultOnNilArg0: true, + hasSideEffects: true, + symEffect: SymWrite, + asm: s390x.AMOVB, + reg: regInfo{ + inputs: []inputInfo{ + {0, 4295023614}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP SB + {1, 56319}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R11 R12 R14 SP + }, + }, + }, + { name: "MOVWatomicstore", auxType: auxSymOff, argLen: 3, @@ -31348,6 +31427,12 @@ var opcodeTable = [...]opInfo{ generic: true, }, { + name: "AtomicStore8", + argLen: 3, + hasSideEffects: true, + generic: true, + }, + { name: "AtomicStore32", argLen: 3, hasSideEffects: true, |