diff options
Diffstat (limited to 'src/cmd/compile/internal/ssa/opGen.go')
-rw-r--r-- | src/cmd/compile/internal/ssa/opGen.go | 119 |
1 files changed, 86 insertions, 33 deletions
diff --git a/src/cmd/compile/internal/ssa/opGen.go b/src/cmd/compile/internal/ssa/opGen.go index 9d11d03793..2938bd1706 100644 --- a/src/cmd/compile/internal/ssa/opGen.go +++ b/src/cmd/compile/internal/ssa/opGen.go @@ -7307,6 +7307,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultInArg0: true, faultOnNilArg1: true, + hasSideEffects: true, asm: x86.AXCHGL, reg: regInfo{ inputs: []inputInfo{ @@ -7324,6 +7325,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultInArg0: true, faultOnNilArg1: true, + hasSideEffects: true, asm: x86.AXCHGQ, reg: regInfo{ inputs: []inputInfo{ @@ -7342,6 +7344,7 @@ var opcodeTable = [...]opInfo{ resultInArg0: true, clobberFlags: true, faultOnNilArg1: true, + hasSideEffects: true, asm: x86.AXADDL, reg: regInfo{ inputs: []inputInfo{ @@ -7360,6 +7363,7 @@ var opcodeTable = [...]opInfo{ resultInArg0: true, clobberFlags: true, faultOnNilArg1: true, + hasSideEffects: true, asm: x86.AXADDQ, reg: regInfo{ inputs: []inputInfo{ @@ -7387,6 +7391,7 @@ var opcodeTable = [...]opInfo{ argLen: 4, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: x86.ACMPXCHGL, reg: regInfo{ inputs: []inputInfo{ @@ -7407,6 +7412,7 @@ var opcodeTable = [...]opInfo{ argLen: 4, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: x86.ACMPXCHGQ, reg: regInfo{ inputs: []inputInfo{ @@ -7427,6 +7433,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: x86.AANDB, reg: regInfo{ inputs: []inputInfo{ @@ -7441,6 +7448,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: x86.AORB, reg: regInfo{ inputs: []inputInfo{ @@ -10075,6 +10083,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, @@ -10088,6 +10097,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, @@ -10101,6 +10111,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, @@ -10114,6 +10125,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, @@ -10127,6 +10139,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, @@ -10140,6 +10153,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, @@ -10153,6 +10167,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, @@ -10166,6 +10181,7 @@ var opcodeTable = [...]opInfo{ inputs: []inputInfo{ {0, 4294901760}, // F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 F13 F14 F15 }, + clobbers: 2147483648, // F15 outputs: []outputInfo{ {0, 21503}, // R0 R1 R2 R3 R4 R5 R6 R7 R8 R9 R12 R14 }, @@ -12657,6 +12673,7 @@ var opcodeTable = [...]opInfo{ name: "STLR", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: arm64.ASTLR, reg: regInfo{ inputs: []inputInfo{ @@ -12669,6 +12686,7 @@ var opcodeTable = [...]opInfo{ name: "STLRW", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: arm64.ASTLRW, reg: regInfo{ inputs: []inputInfo{ @@ -12682,6 +12700,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, 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 @@ -12697,6 +12716,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, 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 @@ -12712,6 +12732,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, 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 @@ -12727,6 +12748,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, 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 @@ -12743,6 +12765,7 @@ var opcodeTable = [...]opInfo{ resultNotInArgs: true, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, 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 @@ -12760,6 +12783,7 @@ var opcodeTable = [...]opInfo{ resultNotInArgs: true, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, 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 @@ -12775,6 +12799,7 @@ var opcodeTable = [...]opInfo{ name: "LoweredAtomicAnd8", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: arm64.AAND, reg: regInfo{ inputs: []inputInfo{ @@ -12787,6 +12812,7 @@ var opcodeTable = [...]opInfo{ name: "LoweredAtomicOr8", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: arm64.AORR, reg: regInfo{ inputs: []inputInfo{ @@ -13977,6 +14003,7 @@ var opcodeTable = [...]opInfo{ name: "LoweredAtomicStore", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, reg: regInfo{ inputs: []inputInfo{ {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 @@ -13988,6 +14015,7 @@ var opcodeTable = [...]opInfo{ name: "LoweredAtomicStorezero", argLen: 2, faultOnNilArg0: true, + hasSideEffects: true, reg: regInfo{ inputs: []inputInfo{ {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB @@ -13999,6 +14027,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, reg: regInfo{ inputs: []inputInfo{ {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 @@ -14014,6 +14043,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, reg: regInfo{ inputs: []inputInfo{ {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 @@ -14030,6 +14060,7 @@ var opcodeTable = [...]opInfo{ argLen: 2, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, reg: regInfo{ inputs: []inputInfo{ {0, 140738025226238}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 SP g R31 SB @@ -14044,6 +14075,7 @@ var opcodeTable = [...]opInfo{ argLen: 4, resultNotInArgs: true, faultOnNilArg0: true, + hasSideEffects: true, reg: regInfo{ inputs: []inputInfo{ {1, 469762046}, // R1 R2 R3 R4 R5 R6 R7 R8 R9 R10 R11 R12 R13 R14 R15 R16 R17 R18 R19 R20 R21 R22 R24 R25 R28 g R31 @@ -14059,6 +14091,7 @@ var opcodeTable = [...]opInfo{ name: "LoweredAtomicAnd", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: mips.AAND, reg: regInfo{ inputs: []inputInfo{ @@ -14071,6 +14104,7 @@ var opcodeTable = [...]opInfo{ name: "LoweredAtomicOr", argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: mips.AOR, reg: regInfo{ inputs: []inputInfo{ @@ -19500,6 +19534,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.AMOVW, reg: regInfo{ inputs: []inputInfo{ @@ -19514,6 +19549,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.AMOVD, reg: regInfo{ inputs: []inputInfo{ @@ -19527,6 +19563,7 @@ var opcodeTable = [...]opInfo{ auxType: auxSymOff, argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.ALAA, reg: regInfo{ inputs: []inputInfo{ @@ -19543,6 +19580,7 @@ var opcodeTable = [...]opInfo{ auxType: auxSymOff, argLen: 3, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.ALAAG, reg: regInfo{ inputs: []inputInfo{ @@ -19570,6 +19608,7 @@ var opcodeTable = [...]opInfo{ argLen: 4, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.ACS, reg: regInfo{ inputs: []inputInfo{ @@ -19590,6 +19629,7 @@ var opcodeTable = [...]opInfo{ argLen: 4, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.ACSG, reg: regInfo{ inputs: []inputInfo{ @@ -19610,6 +19650,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.ACS, reg: regInfo{ inputs: []inputInfo{ @@ -19628,6 +19669,7 @@ var opcodeTable = [...]opInfo{ argLen: 3, clobberFlags: true, faultOnNilArg0: true, + hasSideEffects: true, asm: s390x.ACSG, reg: regInfo{ inputs: []inputInfo{ @@ -21415,59 +21457,70 @@ var opcodeTable = [...]opInfo{ generic: true, }, { - name: "AtomicStore32", - argLen: 3, - generic: true, + name: "AtomicStore32", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicStore64", - argLen: 3, - generic: true, + name: "AtomicStore64", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicStorePtrNoWB", - argLen: 3, - generic: true, + name: "AtomicStorePtrNoWB", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicExchange32", - argLen: 3, - generic: true, + name: "AtomicExchange32", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicExchange64", - argLen: 3, - generic: true, + name: "AtomicExchange64", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicAdd32", - argLen: 3, - generic: true, + name: "AtomicAdd32", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicAdd64", - argLen: 3, - generic: true, + name: "AtomicAdd64", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicCompareAndSwap32", - argLen: 4, - generic: true, + name: "AtomicCompareAndSwap32", + argLen: 4, + hasSideEffects: true, + generic: true, }, { - name: "AtomicCompareAndSwap64", - argLen: 4, - generic: true, + name: "AtomicCompareAndSwap64", + argLen: 4, + hasSideEffects: true, + generic: true, }, { - name: "AtomicAnd8", - argLen: 3, - generic: true, + name: "AtomicAnd8", + argLen: 3, + hasSideEffects: true, + generic: true, }, { - name: "AtomicOr8", - argLen: 3, - generic: true, + name: "AtomicOr8", + argLen: 3, + hasSideEffects: true, + generic: true, }, } |