code: func newConstantinopleInstructionSet() [256]operation {
  	// instructions that can be executed during the byzantium phase.
  	instructionSet := newByzantiumInstructionSet()
  	instructionSet[SHL] = operation{
  		execute:     opSHL,
  		constantGas: GasFastestStep,
  		minStack:    minStack(2, 1),
  		maxStack:    maxStack(2, 1),
  		valid:       true,
  	}
  	instructionSet[SHR] = operation{
  		execute:     opSHR,
  		constantGas: GasFastestStep,
  		minStack:    minStack(2, 1),
  		maxStack:    maxStack(2, 1),
  		valid:       true,
  	}
  	instructionSet[SAR] = operation{
  		execute:     opSAR,
  		constantGas: GasFastestStep,
  		minStack:    minStack(2, 1),
  		maxStack:    maxStack(2, 1),
  		valid:       true,
  	}
  	instructionSet[EXTCODEHASH] = operation{
  		execute:    opExtCodeHash,
  		dynamicGas: gasExtCodeHash,
  		minStack:   minStack(1, 1),
  		maxStack:   maxStack(1, 1),
  		valid:      true,
  	}
  	instructionSet[CREATE2] = operation{
  		execute:    opCreate2,
  		dynamicGas: gasCreate2,
  		minStack:   minStack(4, 1),
  		maxStack:   maxStack(4, 1),
  		memorySize: memoryCreate2,
  		valid:      true,
  		writes:     true,
  		returns:    true,
  	}
  	return instructionSet
  }
docs: // NewConstantinopleInstructionSet returns the frontier, homestead
  // byzantium and contantinople instructions.